2009-11-05 3 views
0

Cela fonctionne mais si ALL SELECTS == 1, dès que je change un SELECT à autre chose, cela retourne vrai ... pourquoi? CONTEXTE: Pour valider un formulaire. J'obtiens toutes les valeurs SELECT dans un div (qui contient plus de divs) et les compare au nombre '1', et si elles == 1, alors un div d'erreur apparaît pour l'utilisateur.Encore un peu d'aide pour faire fonctionner cette boucle, s'il vous plait?

un code pour obtenir toutes les valeurs de sélection:

 var subcats = document.getElementById("annonsera_subcats").getElementsByTagName("select"); 
    subcatsValid(subcats)) etc etc... 

Je me sers de cette boucle dans la fonction subcatsValid():

 function subcatsValid(fld){ 

     for (i=0; i<fld.length; i++){ 
    if (fld[i].value==1){ 
    document.getElementById("annonsera_subcatsempty_error").style.display='block'; 
     document.getElementById("annonsera_subcats").focus(); 
     return false; 
     } 
    document.getElementById("annonsera_subcatsempty_error").style.display='none'; 
    return true; 
    } 
      } 

Je pense que le problème est dans la boucle ... S'il vous plaît aider! Merci

Répondre

3

Vous devez déplacer return true en dehors de la boucle for. Sinon, le premier SELECT avec une valeur autre que 1 renvoie true.

+0

haha, a raté qu'un –

0

Le problème est que l'instruction return est à l'intérieur de la boucle. Cela signifie que lorsque l'un des champs! = 1 (pas égal à un) alors la boucle for retourne true et la boucle et la méthode sont fermées.

Vous pouvez simplement déplacer la déclaration vraie de retour à l'extérieur de la boucle comme suit:

function subcatsValid(fld){ 

     for (i=0; i<fld.length; i++){ 
     if (fld[i].value==1){ 
     document.getElementById("annonsera_subcatsempty_error").style.display='block'; 
       document.getElementById("annonsera_subcats").focus(); 
       return false; 
       } 
     document.getElementById("annonsera_subcatsempty_error").style.display='none'; 

     } 
     return true; 
} 
Questions connexes