如何在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.');