jQuery.validator 驗證規則詳解


前言:jQuery.validator是一款非常不錯的表單驗證插件,驗證方式非常簡單方便,它還對HTML5做了兼容處理,了解了驗證規則,就基本掌握了它的使用,下面就讓我一一道來 jQuery.validator 驗證規則

一、在元素的class屬性中添加需要驗證的規則,多個規則以空格隔開

<label>郵箱:</label>
<input class="required email" type="text" name="email">
復制代碼
required:        // 必填
email:           // 郵箱地址
url:             // url地址
date:            // 日期
dateISO:         // ISO格式的日期(2014/08/27 或 2014-08-27)
number:          // 數字(負數,正數,小數,整數)
digits:          // 正整數
creditcard:      // 信用卡
復制代碼

 

二、將要驗證的規則作為元素的屬性

復制代碼
<label for="userName">用戶名:</label>
<input name="userName" id="userName" required remote="ajax requestUrl">

<label for="password1">密碼:</label>
<input type="password" name="password1" id="password1" required rangelength="6,12">

<label for="password2">請再次輸入密碼:</label>
<input type="password" name="password2" id="password2" required equalTo="#password1">
復制代碼
復制代碼
required:        // 必填
email:           // 郵箱地址
url:             // url地址
date:            // 日期
dateISO:         // ISO格式的日期(2014/08/27 或 2014-08-27)
number:          // 數字(負數,正數,小數,整數)
digits:          // 正整數
creditcard:      // 信用卡

minlength:       // 輸入字符最小長度(中文算一個字符)
maxlength:       // 輸入字符最大長度(中文算一個字符)
rangelength:     // 輸入字符最小,最大長度(中文算一個字符)
min:             // 數值最小值
max:             // 數值最大值
range:           // 數值最小,最大值
equalTo:         // 再次輸入相同的值
remote:          // 發送ajax請求驗證(常用案例就是在注冊時,驗證用戶名是否存在),
                 // 注:請求返回的 response === true || response === 'true',才算驗證通過,這需要后端的配合
復制代碼

 

jQuery.validator內部做了很多處理,下面寫法都是可以的

<input type="password" name="password1" id="password1" required rangelength="6,12">
<input type="password" name="password1" id="password1" required="" rangelength="6, 12">
<input type="password" name="password1" id="password1" required rangelength="6 12">
<input type="password" name="password1" id="password1" required="true" rangelength="[6,12]">

 

同時還支持HTML5的type屬性,如:

<input type="url" name="url" required>
<input type="number" name="number" required>
<input type="email" name="email" required>

注意:不支持 type="range" 的 input 控件,這是因為需要比較最大,最小值,而不只是簡單的正則驗證

 

三、使用jQuery.fn.data設置驗證規則

<input type="text" name="userName">
$('[name="userName"]').data({
    'ruleRequired': true,
    'ruleRangelength': [4, 10],
    'ruleRemote': 'ajax requestUrl'
});

 

注意:下面寫法是不會生效的,因為元素屬性都是小寫字母,大寫字母都會轉換為小寫

<input type="text" name="userName" data-ruleRequired="true" data-ruleRangelength="4,10" data-ruleRemote="">

 

四、在配置對象中,傳遞要驗證的規則

<form id="validForm">
    <input type="text" name="userName">
    <input type="text" name="email">
    
    <input type="submit" value="提交">
</form>
復制代碼
$('#validForm').validate({
    // 每一個name值對應一組規則
    userName: {
        required: true,
        rangelength: [4,10],
        remote: ''    // ajax請求地址
    },
    email: {
        required: true,
        email: true
    }
});
復制代碼

 

五、自定義驗證規則

使用 $.validator.addMethod( name, method, message ), 便可以添加自定義規則
如:我要自定義一條驗證手機號碼的規則:

$.validator.addMethod('mobile', function( value, element ){

    // /^1\d{10}$/ 來自支付寶的正則
    return this.optional( element ) || /^1\d{10}$/.test( value );

}, '請輸入正確的手機號碼');

 

六、其他( 處理頻繁請求ajax的操作 )

情景1:關注與取消關注,這種需求需要處理連續 多個ajax請求的關系

我之前的處理是上一個ajax請求完畢了,才去響應用戶的下一次單擊操作,即再次發送ajax請求

 

情景2:jQuery.validator源碼中的例子

如果驗證規則是 remote ,發送ajax請求驗證,由於插件在keyUp事件中會觸發驗證,那么當keyUp頻繁的觸發,ajax就會請求很多很多次啦,這就涉及到處理連續多個ajax請求的問題,
即:上一次ajax請求還沒完成,緊接着又發送ajax請求,這樣是不是有點凌亂呢,jQuery.validator是這樣做的,將上一次未響應的ajax請求中斷,這樣只會在最后一次keyUp事件中發送ajax驗證

比較:想想情景1的例子,第二種處理方式更好,因為情景1的處理,可能會在最后一次單擊事件無響應,不會觸發ajax請求,造成用戶體驗不好,這是因為在最后一次單擊事件中,上一次ajax請求還未完成(響應)

 

PS:
jQuery.validator有四種為表單控件添加驗證規則的方式,其內部實現是按 class, attribute, jQuery.fn.data, 配置對象依次疊加的,后面途徑添加的規則會覆蓋前面添加的規則;
如果有多個表單控件的name屬性值相同(屬性值包含''),除第一個表單控件會驗證,后面name屬性值相同的表單控件驗證將會忽略;

本篇只是研究jQuery.validator的驗證規則,其他的放在后面講述,如果你覺得本文對你有用,請豎起你的大拇指,轉載請注明出處:博客園 華子yjh ,謝謝!

 

 
 
標簽:  jQuery.validator


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM