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

5vf7fwbs  于 2023-04-20  发布在  jQuery
关注(0)|答案(9)|浏览(191)

我想知道如何使它,以便我可以制定一个规则,其中一个字段不等于一个值。就像我有一个名为'name'的字段,所以我不希望'name' = 'Your Name'。
有没有人知道如何做到这一点?谢谢你的帮助。

lh80um4z

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

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

3pvhb19x

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" }
jucafojl

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'
        }
    }
});

这对我有用!

jutyujz0

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'] }
    },
});
dzhpxtsq

dzhpxtsq6#

我不确定你是否得到了答案,但是:
return this.optional(element)||return param;
如果值是可变的,则不起作用。
它需要阅读:
return this.optional(element)||value!=$(param).val();
干杯

pnwntuvh

pnwntuvh7#

如果你只有一个值,而你不希望它像你的问题暗示的那样,你可以很容易地检查它,而不需要任何外部插件。

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

nwnhqdif8#

非常感谢,尼克!!!补充一点:如果你有几个字段要验证到validate()函数中,语法应该是:

self.logo.rules(
    'add', {
       notEqual: "Select the Logo"
     }
);
h22fl7wq

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

相关问题