我想知道如何使它,以便我可以制定一个规则,其中一个字段不等于一个值。就像我有一个名为'name'的字段,所以我不希望'name' = 'Your Name'。有没有人知道如何做到这一点?谢谢你的帮助。
lh80um4z1#
你可以使用一个自定义的方法,类似这样:
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" } } });
像这样将其作为规则添加使其更具可扩展性,因此您可以使用它来与其他字段中的默认值进行比较。
3pvhb19x2#
Nick的回答符合要求。我需要比较表单上的两个字段,确保它们不相等。我稍微修改了一下。
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" } } });
如果问题是关于将referringsales与2个不同的基础(比如#initialContact和#salesperson)进行比较,那么只需将该规则添加到列表中。
referringsales: { required: false, notEqual: "#salesperson", notEqual: "#initialContact" }
jucafojl3#
我提出一个多值函数。。
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' } } });
这对我有用!
sf6xfgos4#
下载包中的additional-methods.js中有一个名为“notEqualTo”的:https://github.com/jzaefferer/jquery-validation/blob/master/src/additional/notEqualTo.js
jutyujz05#
这里有一些很好的例子,我写了另一个版本,它可以使用多个字段进行检查
/*=====================================================*/ /* Jquery Valiation addMethod*/ /* Usage: password: {notEqualTo: ['#lastname', '#firstname', '#email']} */ /*====================================================*/ jQuery.validator.addMethod("notEqualTo", function (value, element, param) { var notEqual = true; value = $.trim(value); for (i = 0; i < param.length; i++) { var checkElement = $(param[i]); var success = !$.validator.methods.equalTo.call(this, value, element, checkElement); // console.log('success', success); if (!success) { notEqual = success; } } return this.optional(element) || notEqual; }, "Please enter a diferent value."); /*=====================================================*/ /*=====================================================*/
用法
$("form").validate({ rules: { passwordNewConfirm: { equalTo: "#passwordNew" }, passwordNew: { notEqualTo: "#password" }, password: { notEqualTo: ['#passwordNew', '#passwordNewConfirm'] } }, });
dzhpxtsq6#
我不确定你是否得到了答案,但是:return this.optional(element)||return param;如果值是可变的,则不起作用。它需要阅读:return this.optional(element)||value!=$(param).val();干杯
pnwntuvh7#
如果你只有一个值,而你不希望它像你的问题暗示的那样,你可以很容易地检查它,而不需要任何外部插件。
$('#yourForm').submit(function(e) { if ( $('input[name="yourField"]').val()=='Your Name' ) e.preventDefault(); alert("Your message here"); } });
nwnhqdif8#
非常感谢,尼克!!!补充一点:如果你有几个字段要验证到validate()函数中,语法应该是:
self.logo.rules( 'add', { notEqual: "Select the Logo" } );
h22fl7wq9#
感谢@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.');
9条答案
按热度按时间lh80um4z1#
你可以使用一个自定义的方法,类似这样:
然后像这样使用它:
像这样将其作为规则添加使其更具可扩展性,因此您可以使用它来与其他字段中的默认值进行比较。
3pvhb19x2#
Nick的回答符合要求。我需要比较表单上的两个字段,确保它们不相等。我稍微修改了一下。
编辑回复评论:
如果有多组下拉列表要比较,该方法也适用于这种情况。
如果问题是关于将referringsales与2个不同的基础(比如#initialContact和#salesperson)进行比较,那么只需将该规则添加到列表中。
jucafojl3#
我提出一个多值函数。。
我称之为...
这对我有用!
sf6xfgos4#
下载包中的additional-methods.js中有一个名为“notEqualTo”的:
https://github.com/jzaefferer/jquery-validation/blob/master/src/additional/notEqualTo.js
jutyujz05#
这里有一些很好的例子,我写了另一个版本,它可以使用多个字段进行检查
用法
dzhpxtsq6#
我不确定你是否得到了答案,但是:
return this.optional(element)||return param;
如果值是可变的,则不起作用。
它需要阅读:
return this.optional(element)||value!=$(param).val();
干杯
pnwntuvh7#
如果你只有一个值,而你不希望它像你的问题暗示的那样,你可以很容易地检查它,而不需要任何外部插件。
nwnhqdif8#
非常感谢,尼克!!!补充一点:如果你有几个字段要验证到validate()函数中,语法应该是:
h22fl7wq9#
感谢@Nick Craver♦的回答,但在我的工作环境中,它需要稍微修改才能工作。