Подтвердить что ты не робот

Возвращает значение при использовании jQuery.each()?

Я хочу вернуть false и вернуться из функции, если я нахожу первое пустое текстовое поле

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

и выше код для меня не работает:( может кто-нибудь помочь?

4b9b3361

Ответ 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)
}