我想知道如何制作它以便我可以制定一个字段不等于值的规则。就像我有一个名为'name'的字段所以我不想'name'='你的名字。'
有人知道如何做到这一点吗? 谢谢你的帮助。
答案 0 :(得分:118)
您可以使用自定义方法,如下所示:
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" }
}
});
像这样添加它使它更具可扩展性,因此您可以使用它与其他字段中的默认值进行比较。
答案 1 :(得分:32)
尼克的答案符合要求。我需要比较表单上的两个字段,并确保它们不相等。我修改了一下。
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" }
答案 2 :(得分:10)
我提出了一个多值函数......
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'
}
}
});
这对我有用!
答案 3 :(得分:4)
下载包中的additional-methods.js中有一个名为“notEqualTo”的内容:
https://github.com/jzaefferer/jquery-validation/blob/master/src/additional/notEqualTo.js
答案 4 :(得分:1)
不确定你是否得到了答案,但是:
如果值是可变的,返回this.optional(element)||值 != param;
将无效。
需要阅读:
返回this.optional(element)||值 != $(param).val();
干杯
答案 5 :(得分:0)
如果您只想要一个值,而不是像您的问题所暗示的那样,那么您可以轻松地检查它,而无需任何外部插件。
$('#yourForm').submit(function(e) {
if ( $('input[name="yourField"]').val()=='Your Name' )
e.preventDefault();
alert("Your message here");
}
});
答案 6 :(得分:0)
非常感谢,尼克!稍微补充一下:如果你有几个字段要验证validate()函数,那么语法应该是:
self.logo.rules(
'add', {
notEqual: "Select the Logo"
}
);
答案 7 :(得分:0)
感谢@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.');
答案 8 :(得分:0)
在这里举了一些很好的例子,我写了另一个版本,可以与多个字段进行检查
/*=====================================================*/
/* 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'] }
},
});