概述
Bootstrapvalidator是一款bootstrap風格的表單驗證插件,擁有非常強大的驗證功能,如果系統使用的是bootstrap,那麼驗證插件非此莫屬。
Bootstrapvalidator的github地址:https://github.com/nghuuphuoc/bootstrapvalidator/
Bootstrapvalidator的API文檔:http://formvalidation.io/api/
Bootstrapvalidator的demo:http://formvalidation.io/examples/
目前Bootstrapvalidator最新版在http://formvalidation.io發佈的好像收費了,只能使用github上的早期版本了,然後api及例子文檔見:
http://bootstrapvalidator.votintsev.ru/
一般的校驗因爲demo寫的很詳細了,所以就不多說了下面介紹兩個比較重要的擴展
重點
1.前端自定義驗證
Bootstrapvalidator的前端自定義驗證爲callback,
文檔地址:http://bootstrapvalidator.votintsev.ru/validators/callback/ 下面爲例子代碼:
"rowkey": {
message: 'rowkey驗證失敗',
validators: {
stringLength:{
max: 1000,
message: 'rowkey不能超過1000個字符'
},
callback:{
callback : function(value, validator, $field) {
if ($('input:radio[name="databaseType"]:checked').val() == "Hbase" &&
value == ""){
return {
valid: false,
message: 'rowkey不能爲空'
}
}
else{
return true
}
}
}
}
}
2.ajax後端自定義驗證、
Bootstrapvalidator的前端自定義驗證爲remote,在數據庫驗重時經常會用到
文檔地址:http://bootstrapvalidator.votintsev.ru/validators/remote/ 下面爲例子代碼:
前端:
"tableName": {
message: '表名稱驗證失敗',
validators: {
notEmpty: {
message: '表名稱不能爲空'
},
stringLength:{
max: 100,
message: '表名稱不能超過100個字符'
},
remote: {
message: '表名重複',
url: 'check',
data : '',//這裏默認會傳遞該驗證字段的值到後端
delay:2000 //這裏特別要說明,必須要加此屬性,否則用戶輸入一個字就會訪問後臺一次,會消耗大量的系統資源,
}
}
},
後端:
//檢測新增metaTableName是否重複
def check(){
def map = new HashMap()
def result = service.check(params.name)
if(result){
map.put("valid",true)
}else{
map.put("valid",false)
}
render(map as JSON) //注意後端傳到前端的格式必須是帶有valid屬性的json對象纔會被validator識別
}