基本
$.validator.addMethod 和 $.validator.unobtrusive.adapters.add
需要在載入 DOM 之前就先執行
下面的例子包括
不額外傳入驗證條件
傳入一個驗證條件
傳入多個驗證條件
不額外傳入驗證條件(ex.自定用來比對的上限/下限值)的例子,本例中假設
欄位字元長度不能超過5
validator.addMethod() 裡的 stringlengthcheck 對應到 html tag 裡的 data-val-stringlengthcheck
<head>
<script>
//stringlengthcheck 是在 html tag 中對應的 data-val-stringlengthcheck
$.validator.addMethod('stringlengthcheck', function (value, element, params) {
//假設驗證欄位不可大於5
return value.length <= 5;
});
//因為沒有要多傳參數做判斷,所以在 adapters.add 中沒有特別處理
//為了要做 unobtrusive 的設定
$.validator.unobtrusive.adapters.add("stringlengthcheck", function (options) {
options.rules["stringlengthcheck"] = {
};
options.messages["stringlengthcheck"] = options.message;
});
</script>
</head>
<body>
<input type="text" value="" name="money" id="money" data-val="true" data-val-stringlengthcheck="字元長度限制" />
<span data-valmsg-for="money" data-valmsg-replace="true"></span>
</body>
<head>
<script>
//傳入一個額外驗證條件
//data-val-stringlengthcheck="錯誤訊息" 會觸發驗證
//$.validator.addMethod 的 stringlengthcheck 要對應到 html tag 的 data-val-stringlengthcheck
$.validator.addMethod('stringlengthcheck', function (value, element, params)
{
//驗證條件,欄位內容長度需要小於
return value.length <= params["myMaxValue"];
});
//$.validator.unobtrusive.adapters.add 的 ["myMaxValue"] 對應到 html tag 的 data-val-stringlengthcheck-myMaxValue
$.validator.unobtrusive.adapters.add("stringlengthcheck", ["myMaxValue"], function (options)
{
//要指定參數,在 validator 裡才接的到
options.rules["stringlengthcheck"] = {
myMaxValue: options.params.myMaxValue
};
options.messages["stringlengthcheck"] = options.message;
});
</script>
</head>
<body>
<input type="text" name="myValue1" id="myValue1"
data-val="true"
data-val-stringlengthcheck="超過上限"
data-val-stringlengthcheck-myMaxValue=10 />
<span data-valmsg-for="myValue1" data-valmsg-replace="true"></span>
</body>
<head>
<script>
$.validator.addMethod('stringlengthcheck', function (value, element, params)
{
return value.length >= params["myValue1"] && value.length <= params["myValue2"];
});
//參數用 ["myValue1","myValue2"] 對應到 html tag 就是
//data-val-stringlengthcheck-myValue1 和 data-val-stringlengthcheck-myValue2
$.validator.unobtrusive.adapters.add("stringlengthcheck", ["myValue1","myValue2"], function (options)
{
var params ={
myValue1: options.params.myValue1,
myValue2: options.params.myValue2
}
options.rules["stringlengthcheck"] = params;
options.messages["stringlengthcheck"] = options.message;
});
</script>
</head>
<body>
<input type="text" value="" name="myValue" id="myValue" data-val="true"
data-val-stringlengthcheck="超過上下限"
data-val-stringlengthcheck-myValue1=1
data-val-stringlengthcheck-myValue2=2 />
<span data-valmsg-for="myValue" data-valmsg-replace="true"></span>
</body>
沒有留言:
張貼留言