用easyui做業務系統,對於默認的幾個驗證規則,肯定是不夠的,難免會增加幾種規則。可是問題來了,往往是我們在開發會遇到很多各種各樣的驗證,時間久了才發現,這些擴展的正則無非就是添加一個正則驗證規則,那我為啥不將正則放到前端呢?想到這個說干就干,於是有了REGEX這個驗證規則,愉快的調用幾次后,感覺這功能還不錯,心里賊爽了下。一段時間后,發現有些驗證居然還和數據業務有關系,這下問題又來,難道我又要些一堆的規則!到底能不能象我的正則驗證一樣統一呢。果不其然,在苦思冥想半小時后,我這FUN驗證規則浮出水面。
//自定義正則驗證 REGEX: { validator: function (value, param) { var regex = param[0]; var re = new RegExp(regex); return re.test(value); }, message: '{1}' }, //自定義函數驗證 FUN: { validator: function (value, param) { var fun = param[0]; if ($.isFunction(fun)) { return fun(value); } return true; }, message: '{1}' },
解釋一下,$.extend($.fn.validatebox.defaults.rules,{}),這里可以擴展很多規則,當然現在又了 REGEX 和 FUN 規則,感覺可以不用寫其他的規則了,小小滿足一下。
哇,功能這么強大,那我要怎么使用呢?
FUN:
<label for="F_FPSL" class="input_lable ">發票稅率(%)</label><input type="text" name="F_FPSL" class="easyui-textbox input_box" data-options="width:107,prompt:'多個稅率逗號隔開',validType:{FUN:[Jsdwxx.validatafpsl,'發票稅率只能錄入數字']}" />
REGEX:
<label for="F_SBDQ" class="input_lable ">上報地區</label><input type="text" name="F_SBDQ" class="easyui-textbox input_box" data-options="width:132,prompt:'例如:ZYCC',validType:{REGEX:['^[A-Za-z]{4}$','上報地區為4個字母']},boxCls:'uppercase'" /></li>
PS:規則中 {0},{1},{...}和前台定義REGEX:[0,1,...]一一對應