[Javascript] Problème gestion des doublons

Résolu
Bonjour,
je souhaiterai réaliser un code javascript permettant de vérifier l'existence de doublons dans un formulaire !

J'ai réalisé un code fonctionnant mais ne me convenant pas parfaitement !

<html>
<head>
<script language=javascript>
function check_fields(a_form)
{
   // Boucle sur tous les élément du formulaire
   for (i = 0; i < a_form.elements.length ; i++) {
      if (a_form.elements[i].type == "text" ) {
         // Test only edit fields
 
         // Boucle pour comparer ce champ avec les autres
         // pour voir s'il y a des doublons
         for (j = 0; j < a_form.elements.length ; j++) {
            if (i == j) continue;
            if (a_form.elements[j].type != "text" ) continue;
            if (a_form.elements[i].value == a_form.elements[j].value) {
               alert("Doublon. Saisir autre chose." );
               a_form.elements[i].focus();
               return(false);
            }
         }
      }
   }
   // It's ok, submit the form
   a_form.submit();
 
   return(true);
}
</script>
</head>
<body>
<form name='voeux' onsubmit='return check_fields(this)' action='http://mangaflooding.superforum.fr/index.forum' method='GET' >

Field 1<input type="text" name="champ1" size="5"><p>
Field 2<input type="text" name="champ2" size="5"><p>
Field 2<input type="text" name="champ3" size="5"><p>
Field 2<input type="text" name="champ4" size="5"><p>
Field 2<input type="text" name="champ5" size="5"><p>
<input type="submit" value="Validate">
</form>
</body>
</html> 


Donc ce code au dessus fonctionne car j'y ai mis des input :
Field 1<input type="text" name="champ1" size="5"><p>
Maintenant si je souhaite remplacer ces inputs par des menus déroulant on dirait que la vérification ne se fait plus et on accède a l'adresse spécifiée dans "action"

Cela donne donc pour la partie du formulaire (le reste étant inchangé !!) :
<form name='voeux' onsubmit='return check_fields(this)' action='http://mangaflooding.fr/cgi-bin/Projet/ajout_voeux.pl' method='GET' >
<select name='champ1'>
	<option  value='1'>155
	<option  value='2'>200
	<option  value='3'>300
</select>
<select name='champ2'>
	<option  value='1'>155
	<option  value='2'>200
	<option  value='3'>300
</select>
<select name='champ3'>
	<option  value='1'>155
	<option  value='2'>200
	<option  value='3'>300
</select>

<input type="submit" value="Validate">
</form>


Voila avez vous une idée pourquoi cela marche dans un cas et pas dans l'autre ??

Je vous remercie et bonne soirée ^^

Sylvain
Configuration: Windows Vista
Firefox 2.0.0.8

3 réponses

  1. Bonjour,

    Dans ton script, tu ne vérifie que les champs du type "Text" avec les 2 lignes suivantes:

    if (a_form.elements[i].type == "text" ) {

    et

    if (a_form.elements[j].type != "text" ) continue

    Si tu ne veux vérifer que les champs de type "Select" , changes le mot "text" par "select", si tu veux vérifier les deux alors copie ton code deux fois, une fois pour "text", une autre fois pour "select"

    Salut
    1. Merci de ta réponse !

      Je viens d'essayer en remplacant par select a chaque fois qu'il y a "text" et ca ne change rien !!

      Mais bon je pense qu'en efeft ca doit venir de la condition if que j'avais mise en "text" !

      Si tu as une autre idée ce serait génial.

      Merci encore !!