表單驗證,是后台開發中萬年不變的話題,在經歷許多實戰之后發現
使用優雅便捷的validate.js實現驗證實在是一件非常愉悅的事情
<form data-validate>
Enter:
<input type="password" data-rule="密碼:required;number[請輸入一個整數];equals(target)"/>
<input type="password" id="target"/>
</form>
在實例用,form元素中加入了data-validate標記,validate.js會為form標記內的驗證控件進行自動驗證
驗證控件使用data-rule標記,data-rule的語法格式是:
提示名稱: 規則(規則參數) [自定義提示];
其中 ‘提示名稱’與‘自定義提示’都是可選項,某些規則需要傳入一個參數,比如equals規則需要傳入比較控件的id
自定義提示中可以使用{name}與{arg}變量,這在自定義規則中很有用
validate.js會在驗證控件之后加入一個標簽<div class="error_msg"></div>該標簽的模版在$.validate.errorTemplate中
添加標簽的操作由validateHandler實現,validate.js內置了一個簡單的驗證后操作處理函數
用戶可以使用window.validateHandler = function(msg, scrollTo)來自己的驗證后處理函數(添加提示標簽,滾動到錯誤控件處)
validate.js內置了一些規則,定義在 $.validate.rules下,其結構如下:
$.validate.rules = {
required: { rule: /./, message: '不能為空' },
equals: {
action: function (el, rule, val, target) {
return val !== $('#'+target).val();
}, message: '兩次輸入的值不一致'
}
}
用戶可以往$.validate.rules添加自定義規則,規則中包含了 rule,action,message
rule表示為一個正則規則,action表示一個函數驗證規則,兩者是不能同時擁有
message可以是一個“string”也可以是一個函數,如果是“string”類型,那么可以使用{name},{arg}來替換成控件名稱與參數
如果是函數,其格式是 message : function (name,arg){ return '' }
使用js獲取控件驗證狀態:
$('[data-rule]').isValidate() -> bool
獲取驗證消息:
$('form').validate(justTest,scrollTo) ->
param: justTest bool 只是檢查,不修改Dom
param: scrollTo bool 滾動到錯誤元素
return { isValidate : bool,
messages:[{
element:jQueryElement,
message:string
}]
}
