如何在jQuery.validation中添加不等于规则
我想知道如何做到这一点,以便我可以制定一个领域不等于价值的规则。 就像我有一个叫“名字”的字段,所以我不想'名字'='你的名字'。
有没有人知道如何做到这一点? 感谢您的帮助。
你可以使用一个自定义的方法,像这样:
jQuery.validator.addMethod("notEqual", function(value, element, param) { return this.optional(element) || value != param; }, "Please specify a different (non-default) value");
然后像这样使用它:
$("form").validate({ rules: { nameField: { notEqual: "Your Name" } } });
按照这样的规则添加它使其更具可扩展性,因此您可以使用它与其他字段中的默认值进行比较。
尼克的答案符合法案。 我需要比较表单上的两个字段,并确保它们不相等。 我修改了一下。
jQuery.validator.addMethod("notEqual", function(value, element, param) { return this.optional(element) || value != $(param).val(); }, "This has to be different..."); $("#cform").validate( { rules: { referringsales: { required: false, notEqual: "#salesperson" } } });
编辑回答评论:
如果您有多个下拉列表进行比较,该方法也适用于这种情况。
jQuery.validator.addMethod("notEqual", function(value, element, param) { return this.optional(element) || value != $(param).val(); }, "This has to be different..."); $("#cform").validate( { rules: { referringsales: { required: false, notEqual: "#salesperson" } DropDown2: { required: false, notEqual: "#SecondBase" } } });
如果问题是关于比较两个不同基地(比如#initialContact和#salesperson)的referringsales,那么只需将该规则添加到列表。
referringsales: { required: false, notEqual: "#salesperson", notEqual: "#initialContact" }
我提出了一个多值function…
jQuery.validator.addMethod("notEqualTo", function(value, element, param) { var notEqual = true; value = $.trim(value); for (i = 0; i < param.length; i++) { if (value == $.trim($(param[i]).val())) { notEqual = false; } } return this.optional(element) || notEqual; }, "Please enter a diferent value." );
我称之为…
$("#abm-form").validate({ debug: true, rules: { password1: { required: true, minlength: 10, notEqualTo: ['#lastname', '#firstname', '#email'] }, password2: { equalTo: '#password1' } } });
这对我有用!
在下载包中的additional-methods.js中有一个叫做“notEqualTo”:
jzaefferer/jquery-validation/blob/master/src/additional/notEqualTo.html
不知道你是否得到了答案,但是:
返回this.optional(element)|| value!= param;
如果值是可变的,将不会工作。
它需要阅读:
返回this.optional(element)|| value!= $(param).val() ;
干杯
如果你只有一个你想要的值,而不是像你的问题所暗示的那样,你可以在没有任何外部插件的情况下轻松地进行检查。
$('#yourForm').submit(function(e) { if ( $('input[name="yourField"]').val()=='Your Name' ) e.preventDefault(); alert("Your message here"); } });
非常感谢,尼克! 有一点补充:如果你有几个字段来validationvalidate()函数,语法应该是:
self.logo.rules( 'add', { notEqual: "Select the Logo" } );
感谢@Nick Craver♦的回答,但是在我的工作环境中,它需要稍微修改才能工作。
$.validator.addMethod("notEqualTo", function(value, element, param) { return this.optional(element) || value != $(param).val(); }, 'This two elements are the same, please change it.');