2010-09-29 4 views

Répondre

53

Vous sauter, mais de la boucle intérieure, j'utiliser à la place un sélecteur pour votre « aucune valeur » spécifique vérifier, comme ceci:

function validate(){ 
    if($('input[type=text][value=""]').length) return false; 
} 

Ou, définissez le résultat que vous allez à l'intérieur de la boucle, et le retour ce résultat de la boucle extérieure:

function validate() { 
    var valid = true; 
    $('input[type=text]').each(function(){ 
    if($(this).val() == "") //or a more complex check here 
     return valid = false; 
    }); 
    return valid; 
} 
+0

+1 pour une utilisation intelligente du sélecteur et la longueur. – Nolo

+0

@Nick Craver, C'est un très vieux post mais j'ai une question. Y a-t-il un risque au-dessus de cette fonction renvoyer 'true' avant que la boucle' each' soit complétée? – YahyaE

+1

Absolument zéro tel risque car jusqu'à ce que .each() se termine, il ne passera pas à la dernière instruction. @YahyaE – K48

13

Vous pouvez le faire comme ceci:

function validate(){ 
    var rv = true; 
    $('input[type=text]').each(function(){ 
     if($(this).val() == "") { 
      rv = false; // Set flag 
      return false; // Stop iterating 
     } 
    }); 
    return rv; 
} 

que vous voulez retourner suppose true si vous ne trouvez pas.

Vous pouvez constater que c'est l'un de ces sitautions où vous ne souhaitez pas utiliser each du tout:

function validate(){ 
    var inputs = $('input[type=text]'); 
    var index; 
    while (index = inputs.length - 1; index >= 0; --index) { 
     if (inputs[index].value == "") { // Or $(inputs[index]).val() == "" if you prefer 
      return false; 
     } 
    } 
    // (Presumably return something here, though you weren't in your example) 
} 
Questions connexes