如何在jQuery.validation中添加不等于规则

如何在jQuery.validation中添加不等于规则,jquery,validation,Jquery,Validation,我想知道如何使它,以便我可以制定一个规则,其中一个字段不等于一个值。就像我有一个名为“name”的字段,所以我不希望“name”等于“Your name” 有人知道怎么做吗? 谢谢您的帮助。您可以使用自定义方法,如下所示: jQuery.validator.addMethod("notEqual", function(value, element, param) { return this.optional(element) || value != param; }, "Please spe

我想知道如何使它,以便我可以制定一个规则,其中一个字段不等于一个值。就像我有一个名为“name”的字段,所以我不希望“name”等于“Your name”

有人知道怎么做吗?
谢谢您的帮助。

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

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;
}, "Please specify a different (non-default) value");
$("form").validate({
  rules: {
    nameField: { notEqual: "Your Name" }
  }
});

将其添加为这样的规则会使其更具可扩展性,因此您可以使用它与其他字段中的默认值进行比较。

如果您只有一个值,并且希望它与您的问题所暗示的不同,则无需任何外部插件,您就可以非常轻松地进行检查

$('#yourForm').submit(function(e) {
    if ( $('input[name="yourField"]').val()=='Your Name' )
        e.preventDefault();
        alert("Your message here");
    }
});

不确定您是否得到了答案,但是:

返回此.可选(元素)| |值 != param

如果值是可变的,则不起作用

它需要阅读:

返回此.可选(元素)| |值 != $(param).val()


干杯

尼克的回答符合要求。我需要比较表单上的两个字段,确保它们不相等。我只是稍微修改了一下

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: { required: false, notEqual: "#salesperson", notEqual: "#initialContact" }

我提出了一个多值函数

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."
);

这对我有用

非常感谢,尼克!!!添加一点:如果要在validate()函数中验证几个字段,则语法应为:

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.');
下载包中的additional-methods.js中有一个名为“notEqualTo”的文件:


我在这里举了一些很好的例子,编写了另一个版本,可以使用多个字段进行检查

/*=====================================================*/
/* 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."
);
/*=====================================================*/
/*=====================================================*/

山姆的评论:“@Frank Luke:如果我有两个不同的下拉列表怎么办?”@PeterO.,第二个下拉列表有自己的规则。如下所示:secondDropDown:{required:false,notEqual:#secondBase”}第二垒可以是第一垒,也可以是另一垒。notEqual方法检查引用的方法。或者你的意思是你必须将一个值与两个不同的下拉列表进行比较?这不是我的评论。我只是在这里加上它,因为它的作者写它是作为一个答案,而不是一个评论。因此,您应该修改此答案以响应注释。是否有可能使其不区分大小写?@compguy24这将是
返回此选项。可选(元素)| value.toLowerCase()!=参数toLowerCase()addMethod
中的code>,谢谢您的解释!直到今天我才明白这是怎么回事!干杯也可以自定义发送消息吗?是的,但问题是“如何在jQuery.validation中添加不等于规则”,您可以回答此问题。这是另一种情况