强制抛出 jquery 验证器错误

Force throw jquery validator error

我正在为 ajax 表单使用 jQuery 验证插件。

为了验证我使用的每个字段 data-rule-required="true"

现在我有四个字段(读作 4 个信用卡字段)。现在,对于所有这些单独的字段,我得到了必需的错误。

我想合并它们的值并发送 throw 附加到一个错误字段的单个错误。

我试过以下方法:

form3_validation.showErrors({
  "field_name1": "This is error"
});

但它会为每个字段抛出错误,即使它们是有效的。我只想定位那个字段。

更新:OP 澄清用户是关于 jQuery 验证插件,而不是 JS 中的通用数据验证。留下这个答案,因为它并不完全相关,但可能对某些人仍然有帮助。

您可以为每个字段添加一个标识(例如,数据属性data-field-id),然后遍历每个输入字段,如果为空则报告错误。

这将遍历每个输入框并具体报告哪一个是问题所在,因为它们都由标识符标记。

var fields = $(".field");
$("button[type=submit]").click(function() {
  var error = false;
  fields.each(function() {
    if(error) {
      return;
    }
    if($(this).val() === "") {
      error = "Error: required field " + $(this).data("field-id") + " is blank.";
    }
  });
  if(error) {
    alert(error);
  } else {
    alert("All good!");
  }
});
.field {
  width: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="field" data-field-id="1" type="number">-
<input class="field" data-field-id="2" type="number">-
<input class="field" data-field-id="3" type="number">-
<input class="field" data-field-id="4" type="number">
<button type="submit">Submit</button>

首先,从这些字段中删除 data-rule-required="true"

通常的处理方式是 the require_from_group method. This method allows you to treat several fields as one. Combine it with the groups option 为该组中的所有字段获取一条消息。

$(document).ready(function() {

    $('#myform').validate({
        groups: {
            creditcard: "foo1 foo2 foo3 foo4"
        },
        rules: {
            // some other rules here
        },
        errorPlacement: function(error, element) {
            error.insertBefore(element);
        }
    });

    var myGroup = $('.mygroup');

    myGroup.each(function() {
        $(this).rules('add', {
            require_from_group: [4, myGroup],
            messages: {
                require_from_group: "credit card number required"
            }
        });
    });

});
  • 所有四个字段共享一个名为 mygroup 的 class 名称,用于 识别这些。
  • require_from_group 方法是 additional-methods.js 文件,所以不要忘记包含这个 也是。
  • 我使用 .rules() 方法只是为了避免必须定义 在 rules 的对象中有四次相同的规则 .validate() 方法。

演示:jsfiddle.net/9sxt9u1a/


以上根据您客户的要求回答了您的问题。但是,additional-methods.js 文件已经包含了几个现成的信用卡字段规则。它比在一个分组中有四个数字框更清晰、更容易实现。