应用于所有元素的验证规则

Ben*_*ter 3 jquery jquery-validate unobtrusive-validation

我需要通过idnot将验证规则分配给特定的输入元素name

为此,我执行以下代码:

   $("#cvc").rules("add", { required: true, validateCvc: true });
   $("#cardNumber").rules("add", 
     { creditcard: true, messages: { creditcard: "Invalid Card Number" } });
Run Code Online (Sandbox Code Playgroud)

然而,这实际上是将规则分配给表单上的所有输入。我可以通过记录附加到不同输入的规则来验证这一点:

   console.log($("#name").rules());
Run Code Online (Sandbox Code Playgroud)

输出:

Object {required: true, validateCvc: true, creditcard: true} 
Run Code Online (Sandbox Code Playgroud)

更新

看起来这可能与 jQuery Validate Unobtrusive 插件有关,我开始发现它比它的价值更麻烦。validate在添加规则之前调用设置验证的代码:

function validationInfo(form) {
    var $form = $(form),
        result = $form.data(data_validation),
        onResetProxy = $.proxy(onReset, form);

    if (!result) {
        result = {
            options: {  // options structure passed to jQuery Validate's validate() method
                errorClass: "input-validation-error",
                errorElement: "span",
                errorPlacement: $.proxy(onError, form),
                invalidHandler: $.proxy(onErrors, form),
                messages: {},
                rules: {},
                success: $.proxy(onSuccess, form)
            },
            attachValidation: function () {
                $form
                    .unbind("reset." + data_validation, onResetProxy)
                    .bind("reset." + data_validation, onResetProxy)
                    .validate(this.options);
            },
            validate: function () {  // a validation function that is called by unobtrusive Ajax
                $form.validate();
                return $form.valid();
            }
        };
        $form.data(data_validation, result);
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

更新2

这是一个仓库 - http://jsfiddle.net/benfosterdev/emZB8/

您可以在控制台中看到,这显然为两个字段设置了“必需”规则,即使第二个字段没有指定。

如果您想直接使用验证插件,那么最好删除对不引人注目的插件的引用。

Ale*_*x K 5

如果输入没有唯一的名称属性,jQuery Validate 将无法工作。

我浪费了大约 2 个小时来完成这个工作。当我没有正确使用他们的插件时,为什么开发人员不会抛出错误?!

  • 当您将“debug”选项设置为“true”时,您将收到向控制台报告的错误。 (5认同)