簡體   English   中英

jQuery驗證插件1.11.1>規則>自定義邏輯運算符(=> rule1或rule2或rule3…)

[英]jQuery Validation Plugin 1.11.1 > rules > custom logical operators (=> rule1 OR rule2 OR rule3…)

舉個例子,我如何定義一個可以為空或數字或“ foo”的字段?

我目前有這個:

var myValidator= jQuery2("#myFormId").validate({
    rules: {
        myField: {
            digits: true,
            required: false,
            maxlength: 9999,
            myCustomRule: true
        }
}});
jQuery2.validator.addMethod("myCustomRule", function(value, element) {
    return value === "foo" || value=="";
}, "myMessage");

但是,jQuery Validation Plugin自動在需求之間應用AND邏輯運算符,我如何擁有OR? (或者讓我的自定義方法調用jQuery Validation Plugin內置規則,例如數字 ?我不是javascript大師,也許從源代碼上看這很明顯嗎?)

標題:... 自定義邏輯運算符(=> rule1或rule2或rule3…)

當您為此插件聲明規則時,它將應用所有使用邏輯AND聲明的規則。

rules: {
    myField: {
        digits: true,
        //required: false, // <- 'false' is superfluous/default
        maxlength: 9999,
        myCustomRule: true
    }
}

上面指出該字段必須滿足digits AND maxlengthmyCustomRule ; 並且,如果正確編寫了myCustomRulerequired

在評估已聲明規則的列表時,此插件中沒有選項將“ AND”更改為“ OR”。

您可以使用OR運算符評估規則的唯一方法是創建一個將所有驗證邏輯都包含在一個函數中的單個自定義規則。

rules: {
    myField: {
        myCustomRule: true
    }
}

其中myCustomRule包含您自己的函數,所有規則邏輯均由OR運算符分隔。 請參見下面的具體示例解決方案。

...如何定義一個可以為空或數字或“ foo”的字段?

必須創建一個自定義規則,以在一個功能中執行所有這三個操作。

  • blank :這被認為是“可選的”,當您創建自己的自定義規則時,除非您使用OR運算符將結果與this.optional(element)進行比較,否則該字段將保持空白。

  • “ foo” :使用value === "foo"

  • 數字 :只需將代碼用於現有digits規則/^\\d+$/.test(value)

然后使用OR運算符將它們串在一起...

$.validator.addMethod("myCustomRule", function(value, element) {
    return this.optional(element) || value === "foo" || /^\d+$/.test(value);
}, "myMessage");

所有內容都包含在此新的自定義規則中,因此您不得聲明任何其他規則...

var myValidator = $("#myFormId").validate({
    rules: {
        myField: {
            myCustomRule: true
        }
    }
});

結果是一個“可選”字段,該字段還將驗證數字或字符串“ foo”。

演示: jsfiddle.net/tLoef0ov/

這是怎么做。 您不能使用digits: true在您的情況下為digits: true ,因為您希望它是數字或“ foo”。

 var myValidator = $("#myFormId").validate({ rules: { myField: { required: false, maxlength: 9, myCustomRule: true } } }); $.validator.addMethod("myCustomRule", function(value, element) { return value === "" || value === "foo" || !isNaN(value); }, "myMessage"); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script> <form id="myFormId"> <input type="text" name="myField" /> </form> 

暫無
暫無

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

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