基本
$.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>
沒有留言:
張貼留言