如何在jQuery.validation中添加Not Equal To规则

Kyl*_*iss 61 validation jquery

我想知道如何使它成为一个规则,其中一个字段不等于一个值.就像我有一个名为'name'的字段所以我不想'name'='你的名字'.

有没有人知道如何做到这一点?谢谢你的帮助.

Nic*_*ver 123

您可以使用自定义方法,如下所示:

jQuery.validator.addMethod("notEqual", function(value, element, param) {
  return this.optional(element) || value != param;
}, "Please specify a different (non-default) value");
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

$("form").validate({
  rules: {
    nameField: { notEqual: "Your Name" }
  }
});
Run Code Online (Sandbox Code Playgroud)

像这样添加它使它更具可扩展性,因此您可以使用它来与其他字段中的默认值进行比较.


Fra*_*uke 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" }
    }
});
Run Code Online (Sandbox Code Playgroud)

编辑回答评论:

如果您有多个下拉列表要比较,该方法也适用于该情况.

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" }
    }
});
Run Code Online (Sandbox Code Playgroud)

如果问题是将referringsales与2个不同的基础进行比较(比如#initialContact和#salesperson),那么只需将该规则添加到列表中即可.

referringsales: { required: false, notEqual: "#salesperson", notEqual: "#initialContact" }
Run Code Online (Sandbox Code Playgroud)


小智 11

我提出了一个多值函数......

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."
);
Run Code Online (Sandbox Code Playgroud)

我称之为......

$("#abm-form").validate({
debug: true,
rules: {
    password1: {
        required: true,
        minlength: 10,
        notEqualTo: ['#lastname', '#firstname', '#email']
    },
    password2: {
        equalTo: '#password1'
    }
}
});
Run Code Online (Sandbox Code Playgroud)

这适合我!


Tru*_*ill 5

下载包中的additional-methods.js中有一个叫做“ notEqualTo”的文件:

https://github.com/jzaefferer/jquery-validation/blob/master/src/additional/notEqualTo.js