Validation formulaire

Résolu
ameb2908 Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   -  
ameb2908 Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   - 14 nov. 2024 à 09:31

Bonjour,

Mon code fonctionne bien pour mon champ name, mais pas pour

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Espace membres - Créer un compte</title>
    <link rel="stylesheet" href="images/fontawesome-free-6.6.0-web/css/all.min.css">
    <link rel="stylesheet" href="css/create-membre.css">
    <script src="js/create-membre.js"></script>
</head>
<body>
    <form action="" method="post" id="create-membre">
        <fieldset>
            <legend>create</legend>
            <div class="champ">
                <input type="text" name="name" id="name" placeholder="name">
                <span id="icon-name"></span>
            </div>

            <div id="error-name"></div>
            
            <div class="champ">
                <input type="" name="" id="" placeholder="">
                <span id="icon-"></span>
            </div>

            <div id="error-"></div>
        </fieldset>
        <div>
            <input type="submit" value="valider" name="submit">
        </div>
    </form>
</body>
</html>
(function() {
    var createMembre = {
        init: function() {
            window.addEventListener('load', function(event) {
                var form = document.getElementById('create-membre');
                var name = document.getElementById('name');
                var  = document.getElementById('');
                var errorname = document.getElementById('error-name');
                var error = document.getElementById('error-');
                var iconname = document.getElementById('icon-name');
                var icon = document.getElementById('icon-');
                var regexMail = /^[a-z0-9._-]+@[a-z]+\.[a-z]{2,4}$/;
                var regexMin = /[a-z]/;
                var regexMaj = /[A-Z]/;
                var regexChi = /[0-9]/;
                var regexSpe = /,;:!&#"@/;
                form.addEventListener('submit', function(event) {
                    var form = event.target;
                    console.debug('submit');
                    if(!name.value.trim()) {
                        name.classList.remove('bordure-verte');
                        name.classList.add('bordure-rouge');
                        iconname.innerHTML = '<i class="fa-solid fa-exclamation fa-2xs" style="color: #8b0000;"></i>';
                        form.name.focus();
                        errorname.innerText = 'name ne peut être vide !';
                        errorname.classList.add('erreur-message');
                        event.preventDefault();
                        return;
                    }
                    else if(!regexMail.test(name.value)) {
                        name.classList.remove('bordure-verte');
                        name.classList.add('bordure-rouge');
                        iconname.innerHTML = '<i class="fa-solid fa-exclamation fa-2xs" style="color: #8b0000;"></i>';
                        form.name.focus();
                        errorname.innerText = 'Indiquez une adresse mail valide !';
                        errorname.classList.add('erreur-message');
                        event.preventDefault();
                        return;
                    }
                    else {
                        name.classList.remove('bordure-rouge');
                        name.classList.add('bordure-verte');
                        iconname.innerHTML = '<i class="fa-solid fa-check fa-2xs" style="color: #63E6BE;"></i>';
                        errorname.innerText = '';
                        errorname.classList.remove('erreur-message');
                        event.preventDefault();
                        return;
                    }
                    if(!.value.trim()) {
                        .classList.add('bordure-rouge');
                        .classList.remove('bordure-verte');
                        icon.innerHTML = '<i class="fa-solid fa-exclamation fa-2xs" style="color: #8b0000;"></i>';
                        form..focus();
                        error.innerText = ' ne peut être vide !';
                        error.classList.add('erreur-message');
                        event.preventDefault();
                        return;
                    }
                    else if(!regexMin.test(.value)) {
                        .classList.add('bordure-rouge');
                        .classList.remove('bordure-verte');
                        icon.innerHTML = '<i class="fa-solid fa-exclamation fa-2xs" style="color: #8b0000;"></i>';
                        form..focus();
                        error.innerText = ' doît contenir des minuscules !';
                        error.classList.add('erreur-message');
                        event.preventDefault();
                        return;
                    }
                    else if(!regexMaj.test(.value)) {
                        .classList.add('bordure-rouge');
                        .classList.remove('bordure-verte');
                        icon.innerHTML = '<i class="fa-solid fa-exclamation fa-2xs" style="color: #8b0000;"></i>';
                        form..focus();
                        error.innerText = ' doît contenir des majuscules !';
                        error.classList.add('erreur-message');
                        event.preventDefault();
                        return;
                    }
                    else if(!regexChi.test(.value)) {
                        .classList.add('bordure-rouge');
                        .classList.remove('bordure-verte');
                        icon.innerHTML = '<i class="fa-solid fa-exclamation fa-2xs" style="color: #8b0000;"></i>';
                        form..focus();
                        error.innerText = ' doît contenir des chiffres !';
                        error.classList.add('erreur-message');
                        event.preventDefault();
                        return;
                    }
                    else if(!regexSpe.test(.value)) {
                        .classList.add('bordure-rouge');
                        .classList.remove('bordure-verte');
                        icon.innerHTML = '<i class="fa-solid fa-exclamation fa-2xs" style="color: #8b0000;"></i>';
                        form..focus();
                        error.innerText = ' doît contenir des caractères spéciaux ,;:!&#"@';
                        error.classList.add('erreur-message');
                        event.preventDefault();
                        return;
                    }
                    else {
                        .classList.remove('bordure-rouge');
                        .classList.add('bordure-verte');
                        icon.innerHTML = '<i class="fa-solid fa-check fa-2xs" style="color: #63E6BE;"></i>';
                        error.innerText = '';
                        error.classList.remove('erreur-message');
                        event.preventDefault();
                        return;
                    }
                });
            });
        }
    };
    createMembre.init();
})();

Merci pour votre aide.
Windows / Chrome 130.0.0.0

4 réponses

jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 

bonjour 

ça ne marche pas.... c'est à dire ?

as-tu des erreurs dans la console de ton navigateur ? sinon, peux-tu expliquer en détail en quoi cela ne fonctionne pas ?


0
ameb2908 Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   1
 

J'ai les messages d'erreurs du champ name et pas d'

0
jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 

Dans quel cas ?

Car tu fais des return dans ton code.. et donc tu ne es pas à la suite... Donc si tu as une erreur dans le name... tu ne verras pas l'erreur dans le ...

Perso, pour éviter des répétitions dans ton code, je ferai un truc du genre

function setError(elem,message){
  elem.classList.remove('bordure-verte');
  elem.classList.add('bordure-rouge');
  iconelem.innerHTML = '<i class="fa-solid fa-exclamation fa-2xs" style="color: #8b0000;"></i>';
  form.elem.focus();
  errorelem.innerText = message;
  errorelem.classList.add('erreur-message');
}

function setValid(elem){
  elem.classList.remove('bordure-rouge');
  elem.classList.add('bordure-verte');
  iconelem.innerHTML = '<i class="fa-solid fa-check fa-2xs" style="color: #63E6BE;"></i>';
  errorelem.innerText = '';
  errorelem.classList.remove('erreur-message');
  event.preventDefault();
}


function testName(){
  let name = document.getElementById('name');
  console.log('TEST DU NAME');
  if(!name.value.trim()) {
    setError(name,'name ne peut être vide !');
    return false;
  } else if(!regexMail.test(name.value)) {
      setError(name,'Indiquez une adresse mail valide !');
      return false;
  } else {
      setValid(name):
      return true;
  }
}

function test(){
  let regexMail = /^[a-z0-9._-]+@[a-z]+\.[a-z]{2,4}$/;
  let regexMin = /[a-z]/;
  let regexMaj = /[A-Z]/;
  let regexChi = /[0-9]/;
  let regexSpe = /,;:!&#"@/;
  let  = document.getElementById('');
  console.log('TEST DU ');
  if(!.value.trim()) {
    setError(,' ne peut être vide !');
    return false;
  
  } else if(!regexMin.test(.value)) {
    setError(,' doît contenir des minuscules !');
    return false;
  
  } else if(!regexMaj.test(.value)) {
    setError(,' doît contenir des majuscules !');
    return false;
  
  } else if(!regexChi.test(.value)) {
    setError(,' doît contenir des chiffres !');
    return false;
  
  } else if(!regexSpe.test(.value)) {
    setError(,' doît contenir des caractères spéciaux ,;:!&#"@');
    return false;
  } else {
    setValid():
    return true;
  }
}

(function() {
  var createMembre = {
    init: function() {
      window.addEventListener('load', function(event) {
        var form = document.getElementById('create-membre');
        var errorname = document.getElementById('error-name');
        var error = document.getElementById('error-');
        var iconname = document.getElementById('icon-name');
        var icon = document.getElementById('icon-');

        form.addEventListener('submit', function(event) {
            let form = event.target;
            console.debug('submit');
            let valid1 = true;
            let valid2 = true;
            valid1 = testName();
            valid2 = test();  
            
            if(valid1 == false || valid2 == false ){
              console.log('valid1',valid1,'valid2',valid2);
              event.preventDefault();
              return;
            }
        });
      });
    }
  };
  createMembre.init();
})();
1
ameb2908 Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   1
 
(function() {
    var createMembre = {
        init: function() {
            window.addEventListener('load', function(event) {
                function setError(element, iconElement, errorElement, message) {
                    element.classList.remove('bordure-verte');
                    element.classList.add('bordure-rouge');
                    iconElement.innerHTML = '<i class="fa-solid fa-exclamation fa-2xs" style="color: #8b0000;"></i>';
                    form.element.focus();
                    errorElement.innerText = message;
                    errorElement.classList.add('erreur-message');
                }
                
                function setValid(element, iconElement, errorElement) {
                    element.classList.remove('bordure-rouge');
                    element.classList.add('bordure-verte');
                    iconElement.innerHTML = '<i class="fa-solid fa-check fa-2xs" style="color: #63E6BE;"></i>';
                    errorElement.innerText = '';
                    errorElement.classList.remove('erreur-message');
                }
                
                function testName() {
                    var name = document.getElementById('name');
                    var inputname = document.getElementsByTagName('input')[0];
                    var regexMail = /^[a-z0-9._-]+@[a-z]+\.[a-z]{2,4}$/;
                    var iconname = document.getElementsByTagName('span')[0];
                    var errorname = document.getElementsByTagName('div')[1];
                    
                    console.log('TEST DU NAME');
                    
                    if(!name.value.trim()) {
                      setError(inputname, iconname, errorname, 'name ne peut être vide !');
                      return false;
                    }
                    else if(!regexMail.test(name.value)) {
                        setError(inputname, iconname, errorname, 'Indiquez une adresse mail valide !');
                        return false;
                    }
                    else {
                        setValid(inputname, iconname, errorname);
                        return true;
                    }
                  }
                
                  function test() {
                    var  = document.getElementById('');
                    var input = document.getElementsByTagName('input')[1];
                    var regexMin = /[a-z]/;
                    var regexMaj = /[A-Z]/;
                    var regexChi = /[0-9]/;
                    var regexSpe = /,;:!&#"@/;
                    var icon = document.getElementsByTagName('span')[1];
                    var error = document.getElementsByTagName('div')[3];
                    
                    console.log('TEST DU ');
                    
                    if(!.value.trim()) {
                      setError(input, icon, error, ' ne peut être vide !');
                      return false;
                    }
                    else if(!regexMin.test(.value)) {
                      setError(input, icon, error, ' doît contenir des minuscules !');
                      return false;
                    }
                    else if(!regexMaj.test(.value)) {
                        setError(input, icon, error, ' doît contenir des majuscules !');
                        return false;
                    }
                    else if(!regexChi.test(.value)) {
                        setError(input, icon, error, ' doît contenir des chiffres !');
                        return false;
                    }
                    else if(!regexSpe.test(.value)) {
                        setError(input, icon, error, ' doît contenir des caractères spéciaux ,;:!&#"@');
                        return false;
                    }
                    else {
                        setValid(input, icon, error);
                        return true;
                    }
                }
                var form = document.getElementById('create-membre');
                form.addEventListener('submit', function(event) {
                    var form = event.target;
                    console.debug('submit');
                    var validname = true;
                    var valid = true;

                    validname = testName();
                    valid = test();

                    if(validname === false || valid === false) {
                        console.log(validname, valid);
                        event.preventDefault();
                        return;
                    }
                });
            });
        }
    };
    createMembre.init();
})();
    

Bonsoir, ça ne fonctionne toujours pas.

0
jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 

Je te repose encore une fois les mêmes questions :

ça ne marche pas.... c'est à dire ?

as-tu des erreurs dans la console de ton navigateur ? sinon, peux-tu expliquer en détail en quoi cela ne fonctionne pas ?

Fais nous une capture écran de ton navigateur avec la console ouverte !

Expliques nous aussi ce que tu rentres dans ton formulaire... et donnes nous en son code ! 

0
ameb2908 Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   1
 

Bonjour, finalement ça marche nickel, merci de votre aide & bonne journée

0