欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

表單驗(yàn)證插件Validation應(yīng)用的實(shí)例講解

 更新時間:2015年10月10日 09:46:10   投稿:lijiao  
這篇文章的內(nèi)容是表單驗(yàn)證插件Validation應(yīng)用的實(shí)例講解,需要的朋友可以參考下

jquery.Validation是一款優(yōu)秀的jquery插件,它能對客戶端表單進(jìn)行驗(yàn)證,并且提供了許多可以定制的屬性和方法,良好的擴(kuò)展性。現(xiàn)在結(jié)合實(shí)際情況,我把項(xiàng)目中經(jīng)常要用到的驗(yàn)證整理成一個實(shí)例DEMO,本文就是通過講解這個實(shí)例來理解Validation的應(yīng)用。

本實(shí)例涉及到的驗(yàn)證有:
用戶名:長度、字符驗(yàn)證,重復(fù)性ajax驗(yàn)證(是否已存在)。
密碼:長度驗(yàn)證,重復(fù)輸入密碼驗(yàn)證。
郵件:郵件地址驗(yàn)證。
固定電話:中國大陸固定電話號碼驗(yàn)證。
手機(jī)號:中國大陸手機(jī)號碼驗(yàn)證。
網(wǎng)址:網(wǎng)站URL地址驗(yàn)證。
日期:標(biāo)準(zhǔn)日期格式驗(yàn)證。
數(shù)字:整數(shù)、正整數(shù)驗(yàn)證,數(shù)字范圍驗(yàn)證。
身份證:大陸身份證號碼驗(yàn)證。
郵政編碼:大陸郵政編碼驗(yàn)證。
文件:文件類型(后綴)驗(yàn)證,如只允許上傳圖片。
IP:IP地址驗(yàn)證。
驗(yàn)證碼:驗(yàn)證碼ajax驗(yàn)證。
使用方法:
1、準(zhǔn)備jquery和jquery.validate插件

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/jquery.validate.js"></script> 

2、準(zhǔn)備CSS樣式
頁面樣式我不再詳述,大家可以自己寫個樣式,也可以參看DEMO的頁面源代碼。這里要強(qiáng)調(diào)的關(guān)鍵樣式是要顯示驗(yàn)證信息的樣式:

label.error{color:#ea5200; margin-left:4px; padding:0px 20px; 
background:url(images/unchecked.gif) no-repeat 2px 0 } 
label.right{margin-left:4px; padding-left:20px; background: 
url(images/checked.gif) no-repeat 2px 0} 

3、XHTML

<form id="myform" action="#" method="post"> 
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="mytable"> 
 <tr class="table_title"> 
  <td colspan="2">jquery.validation 表單驗(yàn)證</td> 
 </tr> 
 <tr> 
  <td width="22%" align="right">用戶名:</td> 
  <td><input type="text" name="user" id="user" class="input required" /> 
  <p>用戶名為3-16個字符,可以為數(shù)字、字母、下劃線以及中文</p></td> 
 </tr> 
 <tr> 
  <td align="right">密碼:</td> 
  <td><input type="password" name="pass" id="pass" class="input required" /> 
  <p>最小長度:6 最大長度:16</p> 
  </td> 
 </tr> 
 <tr> 
  <td align="right">確認(rèn)密碼:</td> 
  <td><input type="password" name="repass" class="input required" /></td> 
 </tr> 
</table> 
</form> 

值得一提的是,我在給了標(biāo)簽一個“required”類樣式,下文將會提到它的作用。
4、應(yīng)用Validation插件
調(diào)用Validation插件的方法:

$(function(){    
  var validate = $("#myform").validate({ 
     rules:{ //定義驗(yàn)證規(guī)則 
      ...... 
     }, 
     messages:{ //定義提示信息 
      ...... 
     } 
  }) 
}); 

rules:定義驗(yàn)證規(guī)則,key:value的形式,key是要驗(yàn)證的元素,value可以是字符串或?qū)ο?。比如?yàn)證用戶名的長度和不允許為空:

rules:{ 
 user:{ 
   required:true, 
   maxlength:16, 
   minlength:3 
 }, 
 ...... 
} 

其實(shí)我們在XHTML代碼中可以直接指定input的class屬性為required,作用是不允許為空,這樣在JS部分就不用重復(fù)寫了。同樣的驗(yàn)證email等,直接設(shè)置input的class屬性為email。
messages:定義提示信息,key:value的形式key是要驗(yàn)證的元素,值是字符串或函數(shù),當(dāng)驗(yàn)證不通過時提示的信息。

messages:{ 
 user:{ 
   required:"用戶名不能為空!", 
   remote:"該用戶名已存在,請換個其他的用戶名!" 
 }, 
 ...... 
} 

本例中涉及的驗(yàn)證JS就是按照上面的規(guī)則進(jìn)行編寫的,Validation插件封裝了好多基本的驗(yàn)證方式,如下:
required:true 必須有值,不能為空
remote:url 可以用于判斷用戶名等是否已經(jīng)存在,服務(wù)器端輸出true,表示驗(yàn)證通過
minlength:6 最小長度為6
maxlength:16 最大長度為16
rangelength:長度范圍
range:[10,20] 數(shù)值范圍在10-20之間
email:true 驗(yàn)證郵件
url:true 驗(yàn)證URL網(wǎng)址
dateISO:true 驗(yàn)證日期格式'yyyy-mm-dd'
digits:true 只能為數(shù)字
accept:'gif|jpg' 只接受gif或jpg為后綴的圖片。常用于驗(yàn)證文件的擴(kuò)展名
equalTo:'#pass' 與哪個表單字段的值相等,常用于驗(yàn)證重復(fù)輸入密碼
此外,我還根據(jù)項(xiàng)目實(shí)際情況擴(kuò)展了幾個驗(yàn)證,驗(yàn)證的代碼在validate-ex.js,使用前需要先加載這個JS。它能提供以下驗(yàn)證:
userName:true 用戶名只能包括中文字、英文字母、數(shù)字和下劃線
isMobile:true 手機(jī)號碼驗(yàn)證
isPhone:true 大陸手機(jī)號碼驗(yàn)證
isZipCode:true 郵政編碼驗(yàn)證
isIdCardNo:true 大陸身份證號碼驗(yàn)證
ip:true IP地址驗(yàn)證
以上提供的驗(yàn)證方式基本上滿足我們在大多數(shù)項(xiàng)目中的需求。如果其他特殊驗(yàn)證需求,可以擴(kuò)展,方法如:

jQuery.validator.addMethod("isZipCode", function(value, element) {   
 var zip = /^[0-9]{6}$/;   
 return this.optional(element) || (zip.test(value));   
}, "請正確填寫您的郵政編碼!"); 

疑難問題解決:
1、在項(xiàng)目中遇到在驗(yàn)證用戶名是否存在時,發(fā)現(xiàn)不支持中文輸入驗(yàn)證。我的解決辦法是給用戶名進(jìn)行encodeURIComponent編碼,后臺PHP再對接受的值進(jìn)行urldecode解碼

user:{ 
  remote: { 
     url: "chk_user.php", //服務(wù)端驗(yàn)證程序 
     type: "post", //提交方式 
     data: { user: function() { 
       return encodeURIComponent($("#user").val()); //編碼數(shù)據(jù) 
     }} 
  } 
}, 

服務(wù)端驗(yàn)證程序chk_user.php的代碼:

<?php 
$request = urldecode(trim($_POST['user'])); 
usleep(150000); 
$users = array('月光光', 'jeymii', 'Peter', 'helloweba'); 
$valid = 'true'; 
foreach($users as $user) { 
  if( strtolower($user) == $request ) 
    $valid = 'false'; 
} 
echo $valid; 
?> 

我使用的服務(wù)端程序是PHP,您也可以使用ASP,ASP.NET,JAVA等。此外本例為了演示,用戶名數(shù)據(jù)是直接寫在服務(wù)端的,真正的應(yīng)用是從數(shù)據(jù)庫里取出的用戶名數(shù)據(jù),來和接收客戶端的數(shù)據(jù)進(jìn)行對比。
2、在驗(yàn)證checkbox和radio控件時,驗(yàn)證信息不會出現(xiàn)在最后的控件文本后面,而是直接跟在第一個控件的后面,不符合我們的要求。

解決辦法是在validate({})追加以下代碼:

errorPlacement: function(error, element) { 
  if ( element.is(":radio") ) 
    error.appendTo ( element.parent() ); 
  else if ( element.is(":checkbox") ) 
    error.appendTo ( element.parent() ); 
  else if ( element.is("input[name=captcha]") ) 
    error.appendTo ( element.parent() ); 
  else 
    error.insertAfter(element); 
} 

3、重置表單。Form表單原始的重置方法是reset自帶

<input type="reset" value="重 置" /> 

點(diǎn)擊“重置”按鈕,表單元素將會重置,但是再運(yùn)行Validation插件后,驗(yàn)證的提示信息并沒重置,就是那些提示信息沒有消失。感謝Validation提供了重置表單的方法:resetForm()

$("input:reset").click(function(){ 
  validate.resetForm(); 
}); 

相關(guān)文章

最新評論