Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1334 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Mon contrôleur de formulaire en javascript

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mon contrôleur de formulaire en javascript

n°1655030
vita 100
Posté le 08-12-2007 à 19:09:36  profilanswer
 

Bonsoir,
 
J'ai créer un formulaire (ci-dessous) pour un site, avec contrôleur de champs automatique.
 
J'ai décidé de rajouter un checkbox, et du coup j'aimerai qu'il soit contrôlé par mon javascript.
j'ai essayé de d'insérer un ID supplémentaire, mais rien à faire, je ne comprends pas.
Mais pour mieux cerner le problème, je vous met le code :

Code :
  1. <form action="" method="post" style="margin-bottom: 0"  onsubmit="return verif();">
  2.               <input type="hidden" name="recipient" value=""/>
  3.               <input type="hidden" name="redirect" value=""/>
  4.               <input type="hidden" name="subject" value=""/>
  5.               <div class="espace">
  6.        
  7.                 <label for="samaritains">
  8.                   Cours samaritains:
  9.                 </label>
  10.        <input type="checkbox" value="30 nov + 1 d&eacute;c" name="samaritains"  />
  11.        30 nov + 1 d&eacute;c
  12. <input type="checkbox" value="7 d&eacute;c + 8 d&eacute;c" name="samaritains"  />
  13.        7 d&eacute;c + 8 d&eacute;c
  14.        <input type="checkbox" value="14 d&eacute;c + 15 d&eacute;c<" name="samaritains" />
  15.        14 d&eacute;c + 15 d&eacute;c</div>
  16.               <div>
  17.                
  18.                 <label for="sensibilisation" >
  19.                   Cours sensibilisation:
  20.                 </label>
  21.                 <input type="checkbox" value="03,04,05,06d&eacute;c" name="sensibilisation"  />
  22.                 03,04,05,06d&eacute;c
  23. <input type="checkbox" value="10,11,12,13d&eacute;c" name="sensibilisation"  />
  24.                
  25.                 10,11,12,13d&eacute;c
  26.                 <input type="checkbox" value="17,18,19,20d&eacute;c" name="sensibilisation"  />
  27.               17,18,19,20d&eacute;c</div>
  28.               <div class="espace">
  29.                 <label for="confirmation" id="label_confirmation">
  30.                   Confirmation par
  31.                 </label>
  32.                 <select name="confirmation" id="confirmation"  >
  33.                   <option value="CHOISIR">
  34.                   CHOISIR
  35.                   </option>
  36.                   <option value="T&eacute;l&eacute;phone">
  37.                   T&eacute;l&eacute;phone
  38.                   </option>
  39.                   <option value="E-mail">
  40.                   E-mail
  41.                   </option>
  42.                   <option value="courrier">
  43.                   Courrier
  44.                   </option>
  45.                 </select>
  46.               </div>
  47.               <div class="espace">
  48.                 <label for="nom" id="label_nom">
  49.                   Nom
  50.                   <span>
  51.                     *
  52.                   </span>
  53.                 </label>
  54.                 <input type="text" name="nom" id="nom" />
  55.               </div>
  56.               <div class="espace">
  57.                 <label for="prenom" id="label_prenom">
  58.                   Prénom
  59.                   <span>
  60.                     *
  61.                   </span>
  62.                 </label>
  63.                 <input type="text" name="prenom" id="prenom" />
  64.               </div>
  65.               <div class="espace">
  66.                 <label for="adresse" id="label_adresse">
  67.                   Adresse
  68.                   <span>
  69.                     *
  70.                   </span>
  71.                 </label>
  72.                 <input type="text" name="adresse" id="adresse" />
  73.               </div>
  74.               <div class="espace">
  75.                 <label for="postal" id="label_postal">
  76.                   N° postal
  77.                   <span>
  78.                     *
  79.                   </span>
  80.                 </label>
  81.                 <input type="text" name="postal" id="postal" />
  82.               </div>
  83.               <div class="espace" >
  84.                 <label for="ville" id="label_ville">
  85.                   Ville
  86.                   <span>
  87.                     *
  88.                   </span>
  89.                 </label>
  90.                 <input type="text" name="ville" id="ville" />
  91.               </div>
  92.               <div class="espace">
  93.                 <label for="telephone" id="label_telephone">
  94.                   Téléphone
  95.                   <span>
  96.                     *
  97.                   </span>
  98.                 </label>
  99.                 <input type="text" name="telephone" id="telephone" />
  100.               </div>
  101.               <div class="espace">
  102.                 <label for="email" id="label_email">
  103.                   Email
  104.                   <span>
  105.                     *
  106.                   </span>
  107.                 </label>
  108.                 <input type="text" name="email" id="email" />
  109.               </div>
  110.               <div class="espace">
  111.                 <label for="age" id="label_age">
  112.                   N&eacute;(e) le
  113.                   <span>
  114.                     *
  115.                   </span>
  116.                 </label>
  117.                 <input type="text" name="ne_le" id="age" />
  118.               </div>
  119.               <div class="espace">
  120.                 <label for="message" id="label_message">
  121.                   Message
  122.                 </label>
  123. <textarea name="message" id="message" cols="40" rows="3"></textarea>
  124.               </div>
  125.              
  126.    
  127.              
  128.                <div class="espace">
  129.             <label for="cond" id="label_cond">
  130.                   J'accepte le CG <span>
  131.                     *
  132.             </span> </label>
  133.        
  134.             <input type="checkbox" name="condition" id="cond" />
  135.        
  136.               </div>
  137.               <div class="espace">
  138.                 <input name="submit" type="submit" class="envoyer" value="Envoyer" />
  139.               </div>
  140.             </form>


 
et le JS
 
 

Code :
  1. function verif() {
  2.  
  3.          var err = 0;
  4.  
  5.          var fields = new Array('confirmation', 'nom', 'prenom', 'adresse', 'postal', 'ville', 'telephone', 'age', 'email', 'cond');
  6.  
  7.      
  8.  
  9.          for(var i=0; i<fields.length; i++){
  10.  
  11.            if(document.getElementById(fields[i]).value == '') {
  12.              document.getElementById("label_"+fields[i]).className = 'error';
  13.  
  14.              err++;
  15.  
  16.            } else {
  17.              document.getElementById("label_"+fields[i]).className = '';
  18.            }
  19.          }
  20.  
  21.      
  22.          if( validerEmail('email') ) {
  23.            document.getElementById("label_email" ).className = '';
  24.          } else {
  25.  
  26.            document.getElementById("label_email" ).className = 'error';
  27.  
  28.            err++;
  29.          }
  30.  
  31.      
  32.         return ! err;
  33.  
  34.      
  35.  
  36.        }
  37.  
  38.      
  39.  
  40.        function validerEmail(idInput) {
  41.  
  42.          if (!document.getElementById(idInput).value.match(/^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/)) {
  43.  
  44.            return false;
  45.  
  46.          }
  47.  
  48.          return true;
  49.  
  50.        }


 
   
 
Serait-il plus profitable de mettre un menu déroulant (plus facile?)
 
Je vous remercie de votre aide.
 
Bonne soirée
 
Gardem

mood
Publicité
Posté le 08-12-2007 à 19:09:36  profilanswer
 

n°1655267
mIRROR
Chevreuillobolchévik
Posté le 09-12-2007 à 14:42:09  profilanswer
 

désolé mais c est un peu bordelique
quelques trucs qui me sautent aux yeux
les labels n ont pas besoin d id
ton script est trop figé...l array au début meme s il semble etre une bonne idée retire toute sa souplesse à l automatisation
si tu pouvais juste indiquer quel champs tu veux rajouter a la verification...


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1656820
nargy
Posté le 11-12-2007 à 20:16:43  profilanswer
 

Ok, le code présenté vérifie les champs obligatoires et change la classe CSS du label si le champs associé est vide, puis soumet ou non le formulaire, avec un traitement particulier pour l'adresse email.
 
Ça serait plus simple en effet de mettre un <select> vide par défaut plutot qu'une checkbox. Sinon tu as le choix entre:
- ajouter un traitement particulier pour la checkbox
- ajouter un bout de javascript sur la checkbox pour fixer son champs 'value' en fonction de son champs 'checked' à l'aide de onchange.
N'oublie pas de faire ces vérifications aussi du côté serveur, sans quoi les utilisateurs qui désactivent javascript passent au travers des protections.

n°1656827
nargy
Posté le 11-12-2007 à 20:28:10  profilanswer
 

Une solution plus générique:
- sur chaque label, tu ajoute l'id du champs à controler, et le nom de la fonction de controle, avec des attributs customisés (<label myctrlfct="verifemail" myctrlfield="email" ...> ),
- pour vérifier le formulaire, tu parcours le document à l'aide de getElementByTag('label'), tu obtiens alors pour chaque label le nom du champs à vérifier, et la fonction qui va avec.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Mon contrôleur de formulaire en javascript

 

Sujets relatifs
Comment faire un formulaire de renseignements ???créer une macro VBA qui modifiera une base de données automatiquement
debuuger javascript sous strutsRécup de valeurs d'un formulaire quand on sait pas le nb de valeurs
[JavaScript] Spécification de l'encodage d'un document XMLConnaître l'email dans formulaire de candidature web !!!
[HTML]/[PHP] Formulaire boutons radios et onclickproblème de fonction javascript
[JS / DHTML] Validation de formulaireCode formulaire non-interprété [Résolu] & mémorisation valeurs
Plus de sujets relatifs à : Mon contrôleur de formulaire en javascript


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR