【问题标题】:jQuery check all fields with returnjQuery检查所有字段并返回
【发布时间】:2018-05-07 09:32:25
【问题描述】:

我有这个 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 后运行所有后续字段的代码?

【问题讨论】:

  • 将返回语句替换为标志的设置,并在末尾有一个返回语句,该语句根据所述标志返回一个值...

标签: jquery forms return


【解决方案1】:

遍历所有项目并对每个项目设置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;
}

【讨论】:

    【解决方案2】:

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

     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;
    

    【讨论】:

      猜你喜欢
      • 2013-05-08
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 2011-12-30
      • 2017-07-09
      相关资源
      最近更新 更多