2016-02-06 56 views
1

我想添加自定義表單驗證器。而我堅持消息定製問題。如何使用jQuery.validator佔位符自定義錯誤消息?

比方說,我想檢查字段值是否超過最大允許值。 我知道這是驗證插件'有一個「最大」驗證已經 - 這只是樣品:

$.validator.addMethod("max-numeric", function(value, element, param) { 
    var maxValue = $(element).attr("data-max"); 
    return (!maxValue) || maxValue >= value; 
}, $.validator.format('Applicants must be older than {0} and younger than {1} years of age')); 

$("#data-form").validate({ 
    rules: { 
     "form.params1.p4": 
     { 
      "min-numeric": [5, 6] 
     } 
    } 
}); 

我無法理解什麼是負責更換{0}和{1}在「$ .validator。格式'。以及如何傳遞這些參數?

UPDATE:

這裏的消息,我得到:

申請人必須是不是真正的比年長的和年輕的[對象 HTMLInputElement]歲

+1

該方法被稱爲'max-numeric',但是您在'.validate()'方法的'rules'對象中引用'min-numeric'。 – Sparky

+0

@ Sparky這是15小時不間斷編碼後發生的情況)。謝謝。 – nikopol86

+0

我不確定它是否會在這裏有所作爲,但是我發現將消息封裝在'$ .validator.format()'中似乎永遠是完全沒有必要的。當我刪除它時,我還沒有發現一個實例會中斷。 – Sparky

回答

2

我無法理解什麼是替代{0}{1}'$.validator.format'。以及如何傳遞這些參數?

在你上面的例子,{0}表示第一參數和{1}表示第二參數。這些參數分別爲[5, 6],並且消息內的自動替換由插件自動處理。

所以在編寫自定義方法時,沒有什麼特別的,你需要做。如果傳遞三個參數到你的方法...

customMethod: [34, 50, 10] 

...那麼你就必須{0}{1}{2}適用於您的自定義消息,分別代表各參數值。

它只是工作。


如果有一些事情出錯,那麼它是不是很明顯從OP除了:

的方法被稱爲max-numeric,但你在.validate()方法的規則對象引用min-numeric

只要你有兩個參數旁邊max-numeric,那麼你的例子會工作。

max-numeric: [5, 6]