jQuery學習之路(8)- 表單驗證外掛程式-Validation

來源:互聯網
上載者:User

標籤:自己的   訪問   注意   ror   class   表示   uml   element   dig   

▓▓▓▓▓▓ 大致 介紹

  jQuery Validate 外掛程式為表單提供了強大的驗證功能,讓用戶端表單驗證變得更簡單,同時提供了大量的定製選項,滿足應用程式各種需求。該外掛程式捆綁了一套有用的驗證方法,包括 URL 和電子郵件驗證,同時提供了一個用來編寫使用者自訂方法的 API。所有的捆綁方法預設使用英語作為錯誤資訊,且已翻譯成其他 37 種語言。該外掛程式是由 Jörn Zaefferer 編寫和維護的,他是 jQuery 團隊的一名成員,是 jQuery UI 團隊的主要開發人員,是 QUnit 的維護人員。該外掛程式在 2006 年 jQuery 早期的時候就已經開始出現,並一直更新至今。訪問 jQuery Validate 官網,下載最新版的 jQuery Validate 外掛程式。

  :http://static.runoob.com/download/jquery-validation-1.14.0.zip

 

▓▓▓▓▓▓ 基本文法

   Validate外掛程式需要jQuery,所以我們需要在頭部引入jQuery和Validate檔案

1     <script type="text/javascript" src="lib/jquery.js"></script>2     <script type="text/javascript" src="dist/jquery.validate.min.js"></script>

  

  檔案引入完畢,先寫個簡單的表單

 1 <form class="cmxform" id="commentForm" method="get"> 2       <fieldset> 3         <legend>驗證完整的表單</legend> 4         <p> 5           <label for="firstname">名字</label> 6           <input id="firstname" name="firstname" type="text"> 7         </p> 8         <p> 9           <label for="lastname">姓氏</label>10           <input id="lastname" name="lastname" type="text">11         </p>12         <p>13           <label for="username">使用者名稱</label>14           <input id="username" name="username" type="text">15         </p>16         <p>17           <label for="password">密碼</label>18           <input id="password" name="password" type="password">19         </p>20         <p>21           <label for="confirm_password">驗證密碼</label>22           <input id="confirm_password" name="confirm_password" type="password">23         </p>24         <p>25           <label for="email">Email</label>26           <input id="email" name="email" type="email">27         </p>28         <p>29           <label for="agree">請同意我們的聲明</label>30           <input type="checkbox" class="checkbox" id="agree" name="agree">31         </p>32         <p>33           <input class="submit" type="submit" value="提交">34         </p>35       </fieldset>36     </form>

 

  然後我們開始寫驗證表單的代碼

  首先我們需要知道那個表單需要驗證

1         $(function(){2 3             $(‘#commentForm‘).validate();4 5         });

  然後開始寫驗證的規則,要注意這裡選擇元素是根據每個標籤的name屬性選擇的,基本文法如下

1             $(‘#commentForm‘).validate({2                 rules: {3                     firstname: ‘required‘,//required 表示是必要欄位4                     lastname: {5                         required: true,6                         minlength: 3 // 最小長度是37                     }8                 }9             });

 

  從上面可以看出,如果一個資訊只有一個驗證要求可以寫成一行,比如 firstname;如果有多個驗證要寫成像 lastname 這種形式;知道了基本的文法

  在看看Validation都提供了那些校正規則

(1)、required:true               必輸欄位(2)、remote:"remote-valid.jsp"   使用ajax方法調用remote-valid.jsp驗證輸入值(3)、email:true                  必須輸入正確格式的電子郵件(4)、url:true                    必須輸入正確格式的網址(5)、date:true                   必須輸入正確格式的日期,日期校正ie6出錯,慎用(6)、dateISO:true                必須輸入正確格式的日期(ISO),例如:2009-06-23,1998/01/22 只驗證格式,不驗證有效性(7)、number:true                 必須輸入合法的數字(負數,小數)(8)、digits:true                 必須輸入整數(9)、creditcard:true             必須輸入合法的信用卡號(10)、equalTo:"#password"        輸入值必須和#password相同(11)、accept:                    輸入擁有合法尾碼名的字串(上傳檔案的尾碼)(12)、maxlength:5                輸入長度最多是5的字串(漢字算一個字元)(13)、minlength:10               輸入長度最小是10的字串(漢字算一個字元)(14)、rangelength:[5,10]         輸入長度必須介於 5 和 10 之間的字串")(漢字算一個字元)(15)、range:[5,10]               輸入值必須介於 5 和 10 之間(16)、max:5                      輸入值不能大於5(17)、min:10                     輸入值不能小於10

 

  我們將上面的表單驗證完善一下,如下

 1         $(function(){ 2  3             $(‘#commentForm‘).validate({ 4                 rules: { 5  6                     firstname: { 7                         required: true, 8                         minlength: 5 9                     },10 11                     lastname: "required",12 13                     username: {14                         required: true,15                         rangelength: [4,6]16                     },17 18                     password: {19                         required: true,20                         minlength: 4,21                         number: true22                     },23 24                     confirm_password: {25                         required: true,26                         minlength: 3,27                         equalTo: ‘#password‘28                     },29 30                     email: {31                         required: true,32                         email: true33                     },34 35                 }36             });37         });

 

 

  效果:

  可以看到,這裡的提示預設是英文的不太滿意,將提示資訊更改成中文有兩種方式

  第一種方式:引入語言檔案(推薦)

1     <script type="text/javascript" src="dist/localization/messages_zh.js"></script>

  他的提示資訊是:

 1     required: "這是必要欄位", 2     remote: "請修正此欄位", 3     email: "請輸入有效電子郵件地址", 4     url: "請輸入有效網址", 5     date: "請輸入有效日期", 6     dateISO: "請輸入有效日期 (YYYY-MM-DD)", 7     number: "請輸入有效數字", 8     digits: "只能輸入數字", 9     creditcard: "請輸入有效信用卡號碼",10     equalTo: "你的輸入不相同",11     extension: "請輸入有效尾碼",12     maxlength: $.validator.format("最多可以輸入 {0} 個字元"),13     minlength: $.validator.format("最少要輸入 {0} 個字元"),14     rangelength: $.validator.format("請輸入長度在 {0} 到 {1} 之間的字串"),15     range: $.validator.format("請輸入範圍在 {0} 到 {1} 之間的數值"),16     max: $.validator.format("請輸入不大於 {0} 的數值"),17     min: $.validator.format("請輸入不小於 {0} 的數值")

 

  第二種方式:自己寫提示資訊

 1             $(‘#commentForm‘).validate({ 2                 rules: { 3  4                     firstname: { 5                         required: true, 6                         minlength: 5 7                     }, 8  9                     lastname: "required",10 11                     username: {12                         required: true,13                         rangelength: [4,6]14                     },15 16                     password: {17                         required: true,18                         minlength: 4,19                         number: true20                     },21 22                     confirm_password: {23                         required: true,24                         minlength: 3,25                         equalTo: ‘#password‘26                     },27 28                     email: {29                         required: true,30                         email: true31                     }32                 },33                 messages: {34 35                          firstname: "請輸入您的名字",36                          lastname: "請輸入您的姓氏",37                          username: {38                            required: "請輸入使用者名稱",39                            minlength: "使用者名稱必需由兩個字母組成"40                          },41                          password: {42                            required: "請輸入密碼",43                            minlength: "密碼長度不能小於 5 個字母"44                          },45                          confirm_password: {46                            required: "請輸入密碼",47                            minlength: "密碼長度不能小於 5 個字母",48                            equalTo: "兩次密碼輸入不一致"49                          },50                          email: "請輸入一個正確的郵箱",51                        }52             });

 

    

  效果:

 

  注意:還有一種寫驗證的方式是在 class 中寫,例如

          <input id="firstname" name="firstname" type="text" class="{required:true, minlength:2}">

  但是不推薦這種寫法,因為不符合樣式與結構分離的要求,並且還需要自己下載一個jquery.metadata.js檔案才能夠這樣寫

 

 

▓▓▓▓▓▓ 表單提交問題

  可以在表單提交之前執行我們自訂的代碼,當我們的自訂代碼執行完畢後再提交表單

1             $(‘#commentForm‘).validate({2 3                 submitHandler: function(){4                     alert("提交事件成功");5                     from.submit();6                 }7                             });

  可以設定validate的預設值

1         $.validate.setDefaults({2             submitHandler: function(){3                 alert("提交成功!");4                 form.submit();5             }6         });

  只驗證不提交表單

1         $(function(){2          $("#commentForm").validate({3                 debug:true;4             });5         });

 

▓▓▓▓▓▓ 錯誤提示資訊設定

  1、錯誤資訊位置設定

  errorPlacement方法是設定錯誤資訊顯示在哪,預設值是在驗證元素的後面

1         errorPlacement: function(error, element) {  2             error.appendTo(element.parent());  3         }

  errorClass 是設定錯誤資訊的樣式,後跟css類名

  errorElement 是設定用什麼標籤包住錯誤資訊,預設值是<label>

  errorLabelContainer 是設定將所有的錯誤資訊包在一個地方

  wrapper 是設定用什麼標籤再把上邊的 errorELement 包起來

  例如:

1                 errorPlacement: function(error,element){2                     $(element).closest(‘form‘).find(‘label[for="‘+ element.attr("id") +‘"]‘).append(error);3                 },

  是將錯誤提示資訊顯示在驗證的資訊前面

  效果:

   例如:

1                 errorElement: ‘span‘,2                 errorClass: ‘commentError‘,3                 errorLabelContainer: $(‘form div.error‘),4                 wrapper: ‘li‘,

  是將每個提示資訊用<span>標籤包起來,給他們添加css名為 .commentError 的樣式, 並把他們都包再一個class為 error 的div裡,在用<li>把每個提示資訊包起來  

效果:

 

  2、錯誤資訊樣式設定

  有兩種方式可以修改提示資訊的樣式

  第一種就是採用下載Validation時內建的樣式檔案

1     <link href="demo/css/screen.css" type="text/css" rel="stylesheet" />

 

  

  第二種方式就是自己定義樣式(當然也可以修改內建的css檔案)

  例如添加這樣的樣式:

 1         input.error { border: 1px solid red; } 2         label.error { 3           background:url("demo/images/unchecked.gif") no-repeat 0px 0px; 4  5           padding-left: 16px; 6  7           padding-bottom: 2px; 8  9           font-weight: bold;10 11           color: #EA5200;12         }13         label.checked {14           background:url("demo/images/checked.gif") no-repeat 0px 0px;15         }

  效果:

 

▓▓▓▓▓▓ 驗證時的問題

  1、驗證的元素通過

  驗證的元素通過驗證時如果要進行操作,可以使用 success ,他可以接受字串或者是函數,當接受的是字串的時候是添加樣式

  例如:

                success: function(){                    alert(1);                },

  是在要驗證的元素通過驗證時,彈出1

 

  例如:

              success: "valid"    

  是將css樣式名為 .valid 添加到元素上

  

  2、驗證方式

 

 

▓▓▓▓▓▓ 自訂校正

   雖然Validation提供了許多驗證的方式,但是有些情況還是不夠用的,所以如果要添加自訂的校正方式可以使用 addMethod 方法,通常將自訂的方法寫在 additional-methods.js 中,然後要引入這個檔案

    <script type="text/javascript" src="dist/additional-methods.js"></script>

  寫入 additional-methods.js 檔案的內容

    例如:

1 $.validator.addMethod("isZipCode", function(value, element) {   2     var tel = /^[0-9]{6}$/;3     return this.optional(element) || (tel.test(value));4 }, "請正確填寫您的郵遞區號");

  只要把這段代碼寫入 additional-methods.js 檔案就可以使用了

  例如:

1                     zipcode: {2                         required: true,3                         isZipCode :true4                     }

  效果:

 

▓▓▓▓▓▓ radio 和 checkbox、select 的驗證

  radio的required表示必須選中一個

  checkbox的required表示必須選中,minlength表示必須選中的最小個數,maxlength表示必須選中的最大個數,rangelength[2,3]表示選中個數區間

  select的required表示選中的value不可為空,minlength表示必須選中的最小個數,maxlength表示必須選中的最大個數,rangelength[2,3]表示選中個數區間

 

  總結:Validation外掛程式提供了許多的驗證,使用者可以自己添加自己的驗證和提示資訊的樣式,但是在部落格中我並沒有提及與ajax相關的內容,因為ajax還沒有學習-_-||,如果有什麼問題可以和我探討,如果有不對的地方,歡迎指正

 

jQuery學習之路(8)- 表單驗證外掛程式-Validation

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.