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

标签 jquery jquery-validate unobtrusive-validation

我需要通过 id 而不是 name 将验证规则分配给特定的输入元素。

为此,我执行以下代码:

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

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

   console.log($("#name").rules());

输出:

Object {required: true, validateCvc: true, creditcard: true} 

更新

看起来这可能与 jQuery Validate Unobtrusive 插件有关,我开始发现它比它的值(value)更麻烦。设置验证的代码在添加规则之前调用 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;
}

更新2

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

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

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

最佳答案

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

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

关于jquery - 应用于所有元素的验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14962973/

相关文章:

jquery - MVC3 jquery.validate.unobtrusive 覆盖选项而不编辑源代码?

jquery - jquery 对话框中的服务器端验证

validation - 以低调的真实模式树立全局化文化

javascript - PushState 重新加载页面

knockout.js - knockout 自定义绑定(bind)处理程序 - 多个参数和函数回调最佳实践?

javascript - 文件输入 : Cannot read property 'toLowerCase' of undefined 的 Jquery 表单验证器错误

jquery - ASP MVC4+JQuery 验证不起作用

jquery - 动态添加的单选按钮不触发点击功能

jquery - 如何使用 jquery 在悬停时在 div 中显示图像?

jQuery 不适用于负载