Portfolio
    BRUNET Jérémy

Excercice Javascript - Formulaire de contact

Exercice réalisé lors de la semaine sur Javascript pendant nos cours à Campus Academy.

Nous devions faire un formulaire de contact qu'il faudra vérifier en javascript avant envoie.
Pour cela, j'ai utilisé le framework "Bootstrap" pour les champs du formulaire.
Réalisé le 30 avril 2020
Excercice réaliser :
Consignes reçues :
Script JS :

            var nbMax=1000;

            function longueur() {
                var txt=document.formulaire.message.value;
                if (txt.length>nbMax) {
                    document.formulaire.message.value=txt.substring (0,nbMax);
                    txt=document.formulaire.message.value;
                }
                document.formulaire.carac.value=nbMax-txt.length;
                setTimeout("longueur()", 10);
            }

            document.getElementById("nbMax").innerHTML = nbMax;
            type="text/javascript"> longueur()

            const nbCaract = 3;
            var nb1 = Math.floor(Math.random() * 11);
            var nb2 = Math.floor(Math.random() * 11);
            var result = nb1+nb2;
            document.getElementById("nb1").innerHTML = nb1;
            document.getElementById("nb2").innerHTML = nb2;

            function envoyer() {
                msgAlert.style.display = "none";
                let error = "";
                var lastName = document.getElementById("lastName");
                var nbLastName = lastName.value.length;
                var firstName = document.getElementById("firstName");
                var nbFirstName = firstName.value.length;
                var message = document.getElementById("message");
                var nbMessage = message.value.length;
                var poste = document.getElementById("poste").value;
                var userResult = document.getElementById("userResult").value;
                var userResultClass = document.getElementById("userResult");
                var formPoste = document.getElementById("formPoste");
                var email = document.getElementById("email").value;
                var emailClass = document.getElementById("email");
                const regex = "[a-zA-Z0-9.]{3,}@[a-zA-Z0-9]{3,}\\.[a-zA-Z0-9]{2,}";
                var devis = document.getElementById("devis");
                var contact = document.getElementById("contact");
                var tel = document.getElementById("tel");
                var time = document.getElementById("time");
                var timeValue = document.getElementById("time").value;
                
                //On vérifie le nom
                if (nbLastName < nbCaract){
                    error = error+" nom inférieur à "+nbCaract+" carractère,";
                    lastName.classList.add("is-invalid");
                } else {
                    lastName.classList.remove("is-invalid");
                    lastName.classList.add("is-valid");
                }
                //On vérifie le prénom
                if (nbFirstName < nbCaract){
                    error = error+" prénom inférieur à "+nbCaract+" carractère,";
                    firstName.classList.add("is-invalid");
                } else {
                    firstName.classList.remove("is-invalid");
                    firstName.classList.add("is-valid");
                }
                //On vérifie l'email
                if(email.match(regex)){
                    emailClass.classList.remove("is-invalid");
                    emailClass.classList.add("is-valid");
                } else {
                    error = error+" email invalide,";
                    emailClass.classList.add("is-invalid");
                }
                //On vérifie le poste
                if(poste == 'other'){   
                    var other2 = document.getElementById("other2");
                    var nbOther2 = other2.value.length;
                    formPoste.classList.add("was-validated");
                    if(nbOther2 < nbCaract){
                        error = error+" précisez correctement le poste,";
                        other2.classList.add("is-invalid");
                    } else {
                        other2.classList.remove("is-invalid");
                        other2.classList.add("is-valid");
                    }
                } else if (poste  == ''){
                    error = error+" le poste est vide,";
                    formPoste.classList.add("was-validated");
                } else {
                    formPoste.classList.add("was-validated");
                }
                //On vérifie le motif
                if(devis.checked == true || contact.checked == true || tel.checked == true){
                    if(devis.checked == true){
                        devisLabel.style.color = "green";
                    } else {
                        devisLabel.style.color = "";
                    }
                    if(contact.checked == true){
                        contactLabel.style.color = "green";
                    } else {
                        contactLabel.style.color = "";
                    }
                    if(tel.checked == true){
                        telLabel.style.color = "green";
                        if (timeValue == ""){
                            error = error+" ajouteur une heure,";
                            time.classList.add("is-invalid");
                        } else {
                            time.classList.remove("is-invalid");
                            time.classList.add("is-valid");
                        }
                    } else {
                        telLabel.style.color = "";
                    }
                } else {
                    error = error+" cocher au moins un motif,";
                    devisLabel.style.color = "red";
                    contactLabel.style.color = "red";
                    telLabel.style.color = "red";
                }
                //On vérifie le message
                if (nbMessage < nbCaract){
                    error = error+" message inférieur à "+nbCaract+" carractère,";
                    message.classList.add("is-invalid");
                } else {
                    message.classList.remove("is-invalid");
                    message.classList.add("is-valid");
                }
                //On vérifie le résulat du calcule
                if (userResult != result){
                    error = error+" le resulat de l'opération est incorrect.";
                    userResultClass.classList.add("is-invalid");
                } else {
                    userResultClass.classList.remove("is-invalid");
                    userResultClass.classList.add("is-valid");
                }
                //On affiche s'il y a une erreur
                if (error == ""){
                    erreur.style.display = "none";
                    success.style.display = "block";
                } else {
                    erreur.style.display = "block";
                    success.style.display = "none";
                    document.getElementById("msgErreur").innerHTML = error;
                }
            }

            function time() {
                var checkBox = document.getElementById("tel");
                var time = document.getElementById("time");
                var timeLabel = document.getElementById("timeLabel");

                // Si la checkbox est coché ou non on affiche ou non le champ time
                if (checkBox.checked == true){
                    time.style.display = "block";
                    timeLabel.style.display = "block";
                } else {
                    time.style.display = "none";
                    timeLabel.style.display = "none";
                }
            }