簡體   English   中英

自定義jQuery驗證.addMethod

[英]Custom jQuery Validation .addMethod

我有一個表格,以最小/最大長度為基礎驗證郵政編碼。 我需要將所有國家/地區的拉鏈最小值設為5位數除了澳大利亞之外需要為4.以下是我遇到的問題:

$.validator.addMethod(
    "AusZip",
    function(value, element) {
        if ($("#Country").val("Aus") && ("#PostalCode").length < 4)) {
        return false;
    } else return true;
},
"Australian Zip Code Must Be at least 4 Digits");

然后在規則中

rules: {
    PostalCode: {
        required: true,
        minlength: 5 //for all countries except AUS
        AusZip: true // for Aus
    }
}

長度不是要走的路嗎?

我假設所有驗證規則都必須通過,這意味着如果長度為4,你的minlength總是會失敗。

此外,你錯過了$ before ("#PostalCode").length

此行也設置#Country的值。

$("#Country").val("Aus")

您想獲得該值, 並將其與"Aus" 進行比較

$("#Country").val() === "Aus"

嘗試刪除minlength ,並更改自定義功能。

嘗試這個:

編輯:更改,以便您有2個驗證器。

一個驗證該縣是澳大利亞, 並且該值的長度至少為4。

另一個驗證該縣不是澳大利亞,並且該值的長度至少為5。

$.validator.addMethod("AusZip", function(value, element) {
    var isAus = $("#Country").val() === "Aus";

    if ( isAus && value.length < 4 ) {
        return false;
    } else return true;

}, "Australian Zip Code Must Be at least 4 Digits");

$.validator.addMethod("NonAusZip", function(value, element) {
    var isNotAus = $("#Country").val() !== "Aus";

    if ( isNotAus && value.length < 5 ) {
        return false;
    } else return true;

}, "Zip Code Must Be at least 5 Digits");


$('form').validate({
    rules: {
        PostalCode: {
            required: true,
            AusZip: true,
            NonAusZip: true
        }
    }
});​

或者,如果您不需要基於國家/地區的自定義驗證消息,則可以執行以下操作:

$.validator.addMethod("GlobalZip", function(value, element) {
    var isAus = $("#Country").val() === "Aus";

    if ( ( isAus && value.length < 4 ) || value.length < 5 ) {
        return false;
    } else return true;

}, "Zip Code is not long enough");

$('form').validate({
    rules: {
        PostalCode: {
            required: true,
            GlobalZip: true
        }
    }
});​

暫無
暫無

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

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