jQuery验证validator.addMethod没有被解雇?

时间:2014-06-05 07:34:27

标签: javascript jquery jquery-validate

$("#attribute-save-form").validate({            
    debug: false,
    rules: {
        txtAttributeName: "*",
        txtAttributeLabel: "*",
        txtLength: {
            NotEqualtoZero: true
        }
    },
    messages: {
        txtAttributeName: "*",
        txtAttributeLabel: "*",
        txtLength: {
            NotEqualtoZero: "Please enter length not equal to zero"
        }
    },
    errorElement: "span",
    invalidHandler: function (form, validator) {
        $(validator.errorList).each(function (index, element) {
            element.message = "*";
        });
        ////
    },
    errorPlacement: function (error, element) {
        $(error).insertAfter(element);
    }
});

$.validator.addMethod("NotEqualtoZero", function (value, element, param) {
    return this.optional(element) || /[^0]/.test(value);
},  "Not Equal to zero.");

});

我不知道自己犯了什么错误或错过了什么,但它只是显示*错误消息,而不是"not equal to zero"。请告诉我我做错了什么

更新:我想检查文本框的文本值是否不等于0 我调试了问题是元素我的元素" txtLength"不来了

invalidHandler: function (form, validator) {
        $(validator.errorList).each(function (index, element) {
            element.message = "*";

我的功能" NotEqualToZero"基本上没有在这里被调用,我错过了一些像我在开始时包含这个的东西

<script src="~/Scripts/jquery.validate.js"></script>
<script type="text/javascript">
    jQuery.extend(jQuery.validator.messages, {
        required: "*"
    });

还有什么我需要包括

2 个答案:

答案 0 :(得分:0)

您的NotEqualtoZero规则工作正常,并在此简单演示中显示"Please enter length not equal to zero"错误。只需在文本框中输入0,然后点击输入,系统就会显示错误消息: http://jsfiddle.net/tr22y/

但是NotEqualtoZero 可选 ,除非您还指定了required规则。换句话说,如果将其留空,则不会出现错误消息。

然而,rules的其余部分根本没有任何意义。

rules: {
    txtAttributeName: "*",   // <- "*" is nonsense here
    txtAttributeLabel: "*",  // <- "*" is nonsense here
    txtLength: {
        NotEqualtoZero: true
    }
},

没有* 这样的规则。您必须输入单个有效规则的名称或多个有效规则的key:value对。

即便如此,这个错误仍然没有破坏任何东西。我无法看到您的HTML标记,也无法知道您需要哪些规则,但使用您现有的jQuery代码,NotEqualtoZero规则仍可按设计完美运行​​...

DEMO:http://jsfiddle.net/tr22y/2/

编辑:清理完问题中的代码后,您还可以看到最后有一个额外的});。也许你忘记了顶部的$(document).ready(function() {行?也许是一个削减&amp;发布问题时粘贴错误?

答案 1 :(得分:0)

上面的代码工作正常,我的错误是我在validate方法中的规则和消息中给出了元素ID而不是元素名称,这就是为什么add方法没有调用。