繁体   English   中英

在 jquery 中实现 require_from_group 验证

[英]implementing require_from_group in jquery validate

我试图让一组输入作为一个进行验证。 因此,如果任何输入为空,它将在输入下方显示一条消息。 我一直在这里关注另一个 SO 答案。 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方法的错误已得到修复; 并且该函数目前比您手动创建的函数复杂得多。

所以你只需要包含additional-methods.js文件就可以使用默认的require_from_group方法。 否则,您可以从additional-methods.js文件中复制此方法,但 IMO,为了将来的可维护性,最好包含该文件。

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

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


我试图让一组输入作为一个进行验证。

这不是require_from_group的意思,也不是你配置它的方式......

require_from_group: [2, ".cc"]

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

文档: require_from_group

也许您打算将验证消息合二为一? 如果是这样,那么您将使用groups选项

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

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


还有一个方法叫做skip_or_fill_minimum ,这意味着你设置了一个组中需要的最少字段数,否则可以跳过该组。 不确定这是否是你想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM