jQuery检查返回的所有字段

时间:2017-11-23 12:02:25

标签: jquery forms return

我有这个jQuery代码来检查结帐表单中的字段。它可以工作并完成它所需要的功能,但只要遇到第一个错误就停止检查字段:

  $('#' + x + ' input.required-entry').each(function() {
      var item = $(this);

          if (item.val() === '' || item.is(':invalid')) {
            item.addClass('field-error');
            return isValid = false;
          } else {
            item.removeClass('field-error');
            return isValid = true;
          }

  });

假设我填写了10个字段中的2个并尝试提交,此代码仅将第3个字段标记为不正确。目标是将所有未填充的字段标记为不正确。如果我删除了return isValid行,则会将以下所有字段都标记为无效,但无论如何都会显示该表单,因为isValid未更改。

有没有办法在点击第一个return isValid = false后运行所有后续字段的代码?

2 个答案:

答案 0 :(得分:0)

我在循环外引入一个变量,如果有任何不正确的话你会更新,然后按原样使用循环来更新类。

 var areAnyIncorrect = false;
 $('#' + x + ' input.required-entry').each(function() {
      var item = $(this);

          if (item.val() === '' || item.is(':invalid')) {
            item.addClass('field-error');
            areAnyIncorrect = true
          } else {
            item.removeClass('field-error');
          }

  });
  return areAnyIncorrect;

答案 1 :(得分:0)

迭代所有项目,并针对每个项目设置isValid标志。此函数将返回带有isValid标志的所有值。

function checkItems(){
var items= [];
$('#' + x + ' input.required-entry').each(function() {
 var item = $(this);
    var itemId = item.attr('id');
    var object = {
    ItemId:itemId,
    IsValid:true
    };
    if (item.val() === '' || item.is(':invalid')) {
    item.addClass('field-error');
    object.isValid=false;
    items.push(object);

    }
    else {
    item.removeClass('field-error');
    items.push(object);
    }           
});
return items;
}