在jquery validate中实现require_from_group

我试图让一组输入validation为一个。 因此,如果任何输入为空,它将在输入下方显示一条消息。 我一直在关注另一个SO答案。 4个输入将无法validation。 当没有提交数据时,他们只是不做任何事情。 我的其他输入validation就好了。 这是我的表格:

Credit Card

@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正在validation:

 $.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方法的错误已得到修复; 而且该function目前比您手动创建的function复杂得多。

因此,您只需要包含additional-methods.js文件即可使用默认的require_from_group方法。 否则,您可以将此方法复制到additional-methods.js文件中,但IMO最好包含该文件以备将来维护。

如果这不能解决问题,您需要向我们展示您呈现的 HTML标记,如浏览器源中所示,以检查您是否犯了其他任何错误。

工作演示: http : //jsfiddle.net/jo65e26a/


我试图让一组输入validation为一个。

这不是require_from_group的意图,也不是你如何配置它…

 require_from_group: [2, ".cc"] 

2参数表示将需要您的四个组中的任何两个输入。 如果您需要填写所有四个,那么您可以将参数设置为4 ,但这与仅在所有四个输入上使用required规则完全没有区别。

文档: require_from_group

也许您打算将validation消息组合成一个? 如果是这样,那么您将使用groups选项 。

 groups: { ccGroup: "cardNumber name expDate cvv" } 

演示2: http : //jsfiddle.net/sx7cda0c/1/


还有一个名为skip_or_fill_minimum的方法,这意味着您需要从组中设置最小数量的字段,否则,可以跳过该组。 不确定这是不是你想要的。