it-roy-ru.com

jQuery убедитесь, что все поля формы заполнены

У меня есть простая форма, я делаю проверку на стороне клиента для . Чтобы проверить, ни одно из полей не должно быть пустым . Вот как я это делаю:

function validateForm() {
  $('.form-field').each(function() {
    if ( $(this).val() === '' ) {
      return false
    }
    else {
      return true;
    }
  });
}

По какой-то причине моя функция всегда возвращает false, даже если все поля заполнены.

10
sf89

Вы не можете вернуть false из анонимной функции. Кроме того, если это сработало, вы бы вернули false, если ваше первое поле было пустым, true, если нет, и полностью игнорировали бы остальные поля. Может быть более элегантное решение, но вы можете сделать что-то вроде этого: 

function validateForm() {
  var isValid = true;
  $('.form-field').each(function() {
    if ( $(this).val() === '' )
        isValid = false;
  });
  return isValid;
}

Еще одна рекомендация: для этого необходимо, чтобы вы украсили все поля формы этим классом поля формы. Вас может заинтересовать фильтрация с использованием другого селектора, например, $('form.validated-form input[type="text"]')

EDITАх, я получил удар в удар, но мое объяснение все еще в силе и, надеюсь, полезно.

29
Guttsy

Вы возвращались из внутренней функции, а не из метода validate

Пытаться

function validateForm() {
    var valid = true;
    $('.form-field').each(function () {
        if ($(this).val() === '') {
            valid = false;
            return false;
        }
    });
    return valid
}
4
Arun P Johny
function validateForm() {
    var invalid= 0;
    $('.form-field').each(function () {
        if ($(this).val() == '') {
            invalid++;
        }
    });

   if(invalid>0)
       return false;
   else
       return true;
}
1
Irfan TahirKheli

Вот похожий подход:

function validateForm() {
  var valid = true;
  $('.form-field').each(function() {
    valid &= !!$(this).val();
  });
  return valid;
}

!! просто конвертирует входное значение в bool

0
delagics