2010-09-29 13 views
29

quiero volver falso y volver de la función si encuentro primer cuadro de texto en blancoDevuelve un valor al usar jQuery.each()?

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

y por encima de código no está funcionando para mí :( puede ayudar a nadie?

Respuesta

53

Usted está saltando a cabo, pero a partir de el interior bucle, yo en lugar de utilizar un selector para su específica "ningún valor" cheque, así:

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

O bien, ajuste el resultado a medida que avanza dentro del bucle, y el regreso que resultado del bucle externo:

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 para un uso inteligente de selector y longitud. – Nolo

+0

@Nick Craver, es una publicación muy antigua, pero tengo una pregunta. ¿Hay algún riesgo por encima de esa función que devuelva 'true' antes de completar cada ciclo? – YahyaE

+1

Absolutamente cero tal riesgo porque hasta que .each() complete, no pasará a la última declaración. @YahyaE – K48

13

Usted puede hacerlo de esta manera:

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

que asume que desea devolver true si no lo encuentra.

Es posible que este es uno de esos sitautions en el que no desee utilizar each en absoluto:

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