validatebox實現多重規則驗證

2022-03-23 17:22:56 字數 1524 閱讀 3128

作為easyui的校驗外掛程式沒有實現多重校驗能力是一種缺憾。比如說,既要限制格式為email,同時要求最長長度為20,我們就要擴充套件一種規則,而對長度的要求很容易變化,如果變成要求30,我們又得擴張一種規則,所以對於多重驗證的需求很必要。

實現思路較為簡單,擴充套件一種新規則:multiple,入參為其它規則,然後遍歷每個規則,遇到校驗不通過的時候就返回失敗,並且返回對應的提示訊息。思路比較簡單,不過正規表示式技巧的使用還是很漂亮的,個人歲暫時不動正則,不過覺得它很優美,所以我很快就會懂的,哈哈。直接上**了。

實現**:

$.extend($.fn.validatebox.defaults.rules, }}

return returnflag;}}

});

經過以上的擴充套件,多重校驗算是實現了,但是驗證不通過時的提示資訊卻出現了問題,當第二個驗證器驗證失敗的時候,提示資訊會將第乙個驗證器的提示資訊參雜進來。究其原因是validatebox內部提示資訊的實現邏輯不合理,在呼叫驗證器的validator函式之後,又對驗證器的message屬性做包裝。

個人覺得提示資訊應該完全在驗證器內部實現,在外部再做包裝是完全不合理的。其實這種情況目前主要就是為了處理length型別的驗證器的提示資訊,所以解決方案也比較明確和唯一:

對於1.3.1版本,大概在5060行,注釋掉以下**:

//if(_396)","g"),_396[i]);

//}//}

覆寫length型別驗證器:

$.extend($.fn.validatebox.defaults.rules, }}

return returnflag;}},

length : and .';

var len = $.trim(value).length;

if (param) ", "g"), param[i]);}}

return len >= param[0] && len <= param[1];

},message : 'please enter a value between and .'

}});

使用方式:
更新日誌:

2012-12-11

在夏悸的一篇博文中提到了另一種解決方案,大家也可以參考一下:

$.extend($.fn.validatebox.defaults.rules,  characters.';

if(!rules.email.validator(value))

if(!rules.length.validator(value,param))

return value.length >= param[0];

},message : ''

}});

2013-01-06

自從1.3.2版本開始,validatebox自身已經支援多重校驗了,例如:

input class="easyui-validatebox" data-options="required:true,validtype:['email','length[0,20]']">

validatebox實現多重規則驗證

作為easyui的校驗外掛程式沒有實現多重校驗能力是一種缺憾。比如說,既要限制格式為email,同時要求最長長度為20,我們就要擴充套件一種規則,而對長度的要求很容易變化,如果變成要求30,我們又得擴張一種規則,所以對於多重驗證的需求很必要。實現思路較為簡單,擴充套件一種新規則 multiple,入...

Validatebox 驗證框的使用

1 首先了解什麼是validatebox 簡單的講,validatebox的功能是起校驗作用,例如若通過validatebox將型別設定為e mail,那麼validatebox會判斷你輸入的格式,輸入必須輸入e mail格式,否則會提醒報錯 2 舉個簡單的例子,也可以檢視easy ui的api,u...

CSS實現多重邊框

想到多重邊框,我們可能會通過多個元素來模擬實現,但是如何在乙個元素上實現多重邊框呢?如下圖 我們可以通過box shadow來實現。box shadow h shadow v shadow blur spread color inset outset 分別是 水平陰影位置 垂直陰影位置 模糊距離 擴...