在 jquery 中实施 require_from_group 验证
implementing require_from_group in jquery validate
我正在尝试获取一组输入以作为一个进行验证。因此,如果任何输入为空,它将在输入下方显示一条消息。我一直在关注另一个 SO 答案 here。 4 个输入将不会生效。当没有提交数据时,他们什么都不做。我的其他输入验证得很好。
这是我的表格:
<div class="creditcard form-group">
<h2>Credit Card</h2>
@Html.TextBoxFor(model => model.cardNumber, new { @class = "form-control cc", @id = "CardNum", @placeholder = "Card Number" })
@Html.TextBoxFor(model => model.name, new { @class = "form-control cap cc", @id = "FullName", @placeholder = "Full Name" })
@Html.TextBoxFor(model => model.expDate, new { @class = "form-control cc", @id = "CardExp", @placeholder = "MM/YY" })
@Html.TextBoxFor(model => model.cvv, new { @class = "form-control cc", @id = "CardCVV", @placeholder = "CVV" })
@Html.HiddenFor(model => model.ccType)
....
我的 jquery 正在验证:
$.validator.addMethod("require_from_group", function (value, element, options) {
var valid = $(options[1], element.form).filter(function () {
return $(this).val();
}).length >= options[0];
return valid;
}, $.validator.format("Please fill out at least {0} of these fields."));
$("form").validate({
rules: {
cardNumber: { require_from_group: [2, ".cc"] },
name: { require_from_group: [2, ".cc"] },
expDate: { require_from_group: [2, ".cc"] },
cvv: { require_from_group: [2, ".cc"] }
}
});
如果有帮助,这就是 MVC 5。
您正在尝试遵循五年前的答案。从那时起,修复了默认 require_from_group
方法的错误;并且该函数目前比您手动创建的函数复杂得多。
所以你只需要包含 the additional-methods.js
file 就可以使用默认的 require_from_group
方法。否则,您可以从 additional-methods.js
文件中复制此方法,但 IMO,最好包含该文件以供将来维护。
如果这不能解决问题,您需要向我们展示您的 rendered HTML 标记,如在浏览器源代码中看到,检查你是否犯了任何其他错误。
工作演示:http://jsfiddle.net/jo65e26a/
I am trying to get get a group of inputs to validate as one.
这不是 require_from_group
的目的,也不是您配置它的方式...
require_from_group: [2, ".cc"]
2
参数表示需要四组中的任意两个输入。如果您需要填写所有四个,那么您可以将参数设置为 4
,但这与简单地对所有四个输入使用 required
规则没有什么不同。
也许您的意思是将验证消息组合成一个?如果是这样,那么您将使用 the groups
option.
groups: {
ccGroup: "cardNumber name expDate cvv"
}
演示 2:http://jsfiddle.net/sx7cda0c/1/
还有一种方法叫做skip_or_fill_minimum
,这意味着您可以设置一个组中需要的最少字段数,否则,可以跳过该组。也不确定这是否是您想要的。
我正在尝试获取一组输入以作为一个进行验证。因此,如果任何输入为空,它将在输入下方显示一条消息。我一直在关注另一个 SO 答案 here。 4 个输入将不会生效。当没有提交数据时,他们什么都不做。我的其他输入验证得很好。 这是我的表格:
<div class="creditcard form-group">
<h2>Credit Card</h2>
@Html.TextBoxFor(model => model.cardNumber, new { @class = "form-control cc", @id = "CardNum", @placeholder = "Card Number" })
@Html.TextBoxFor(model => model.name, new { @class = "form-control cap cc", @id = "FullName", @placeholder = "Full Name" })
@Html.TextBoxFor(model => model.expDate, new { @class = "form-control cc", @id = "CardExp", @placeholder = "MM/YY" })
@Html.TextBoxFor(model => model.cvv, new { @class = "form-control cc", @id = "CardCVV", @placeholder = "CVV" })
@Html.HiddenFor(model => model.ccType)
....
我的 jquery 正在验证:
$.validator.addMethod("require_from_group", function (value, element, options) {
var valid = $(options[1], element.form).filter(function () {
return $(this).val();
}).length >= options[0];
return valid;
}, $.validator.format("Please fill out at least {0} of these fields."));
$("form").validate({
rules: {
cardNumber: { require_from_group: [2, ".cc"] },
name: { require_from_group: [2, ".cc"] },
expDate: { require_from_group: [2, ".cc"] },
cvv: { require_from_group: [2, ".cc"] }
}
});
如果有帮助,这就是 MVC 5。
您正在尝试遵循五年前的答案。从那时起,修复了默认 require_from_group
方法的错误;并且该函数目前比您手动创建的函数复杂得多。
所以你只需要包含 the additional-methods.js
file 就可以使用默认的 require_from_group
方法。否则,您可以从 additional-methods.js
文件中复制此方法,但 IMO,最好包含该文件以供将来维护。
如果这不能解决问题,您需要向我们展示您的 rendered HTML 标记,如在浏览器源代码中看到,检查你是否犯了任何其他错误。
工作演示:http://jsfiddle.net/jo65e26a/
I am trying to get get a group of inputs to validate as one.
这不是 require_from_group
的目的,也不是您配置它的方式...
require_from_group: [2, ".cc"]
2
参数表示需要四组中的任意两个输入。如果您需要填写所有四个,那么您可以将参数设置为 4
,但这与简单地对所有四个输入使用 required
规则没有什么不同。
也许您的意思是将验证消息组合成一个?如果是这样,那么您将使用 the groups
option.
groups: {
ccGroup: "cardNumber name expDate cvv"
}
演示 2:http://jsfiddle.net/sx7cda0c/1/
还有一种方法叫做skip_or_fill_minimum
,这意味着您可以设置一个组中需要的最少字段数,否则,可以跳过该组。也不确定这是否是您想要的。