簡體   English   中英

如何在jQuery.validation中添加Not Equal To規則

[英]How to add a Not Equal To rule in jQuery.validation

我想知道如何使它成為一個規則,其中一個字段不等於一個值。 就像我有一個名為'name'的字段所以我不想'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).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" }

我提出了一個多值函數......

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

這適合我!

在下載包中的additional-methods.js中有一個名為“notEqualTo”:

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

不確定你是否得到了答案但是:

返回this.optional(元素)|| 價值!= param;

如果值是可變的,則不起作用。

它需要閱讀:

返回this.optional(元素)|| value!= $(param).val() ;

干杯

非常感謝,尼克! 稍微補充一點:如果你有幾個字段要驗證validate()函數,語法應該是:

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

如果您只有一個值,您希望它不像您的問題所暗示的那樣,您可以輕松地檢查它,而無需任何外部插件。

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

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

在這里舉了一些很好的例子,我寫了另一個版本,可以使用多個字段進行檢查

/*=====================================================*/
/* 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'] }
            },
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM