2010-09-29 6 views

risposta

53

Si stanno saltando fuori, ma da l'interno ciclo , vorrei invece utilizzare un selettore per il vostro specifico "nessun valore" controllare, in questo modo:

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

alternativa, impostare il risultato, come si va all'interno del ciclo, e il ritorno che risultato dal ciclo esterno:

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 per l'uso intelligente di selezione e lunghezza. – Nolo

+0

@Nick Craver, è un post molto vecchio ma ho una domanda. C'è qualche rischio al di sopra di quella funzione return 'true' prima del completamento di' each' loop? – YahyaE

+1

Assolutamente azzerato tale rischio perché fino a quando .each() completa, non procederà all'ultima istruzione. @YahyaE – K48

13

si può fare in questo modo:

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

che assuma si desidera tornare true se non lo trovate.

Potreste scoprire che questo è uno di quei sitautions in cui non si desidera utilizzare each affatto:

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) 
}