$("#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: "*"
});
还有什么我需要包括
答案 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方法没有调用。