强制抛出 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()
方法。
以上根据您客户的要求回答了您的问题。但是,additional-methods.js
文件已经包含了几个现成的信用卡字段规则。它比在一个分组中有四个数字框更清晰、更容易实现。
我正在为 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()
方法。
以上根据您客户的要求回答了您的问题。但是,additional-methods.js
文件已经包含了几个现成的信用卡字段规则。它比在一个分组中有四个数字框更清晰、更容易实现。