Возвращает значение при использовании jQuery.each()?
Я хочу вернуть false и вернуться из функции, если я нахожу первое пустое текстовое поле
function validate(){
$('input[type=text]').each(function(){
if($(this).val() == "")
return false;
});
}
и выше код для меня не работает:(
может кто-нибудь помочь?
Ответы
Ответ 1
Вы выпрыгиваете, но из внутреннего цикла я вместо этого использовал селектор для вашей конкретной проверки "нет значения", например:
function validate(){
if($('input[type=text][value=""]').length) return false;
}
Или, задайте результат по ходу внутри цикла и верните этот результат из внешнего цикла:
function validate() {
var valid = true;
$('input[type=text]').each(function(){
if($(this).val() == "") //or a more complex check here
return valid = false;
});
return valid;
}
Ответ 2
Вы можете сделать это следующим образом:
function validate(){
var rv = true;
$('input[type=text]').each(function(){
if($(this).val() == "") {
rv = false; // Set flag
return false; // Stop iterating
}
});
return rv;
}
Предполагается, что вы хотите вернуть true
, если вы его не нашли.
Вы можете обнаружить, что это одно из тех правил, в которых вы вообще не хотите использовать each
:
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)
}