jquery Validation表單驗(yàn)證使用詳解
是一款優(yōu)秀的插件,它能對(duì)客戶(hù)端表單進(jìn)行驗(yàn)證,并且提供了許多可以定制的屬性和方法,良好的擴(kuò)展性。本文就是通過(guò)講解這個(gè)實(shí)例來(lái)理解Validation的應(yīng)用。
本實(shí)例涉及到的驗(yàn)證有:
用戶(hù)名:長(zhǎng)度、字符驗(yàn)證,重復(fù)性ajax驗(yàn)證(是否已存在)。
密碼:長(zhǎng)度驗(yàn)證,重復(fù)輸入密碼驗(yàn)證。
郵件:郵件地址驗(yàn)證。
固定電話(huà):中國(guó)大陸固定電話(huà)號(hào)碼驗(yàn)證。
手機(jī)號(hào):中國(guó)大陸手機(jī)號(hào)碼驗(yàn)證。
網(wǎng)址:網(wǎng)站URL地址驗(yàn)證。
日期:標(biāo)準(zhǔn)日期格式驗(yàn)證。
數(shù)字:整數(shù)、正整數(shù)驗(yàn)證,數(shù)字范圍驗(yàn)證。
身份證:大陸身份證號(hào)碼驗(yàn)證。
郵政編碼:大陸郵政編碼驗(yàn)證。
文件:文件類(lèi)型(后綴)驗(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樣式
頁(yè)面樣式我不再詳述,大家可以自己寫(xiě)個(gè)樣式,也可以參看DEMO的頁(yè)面源代碼。這里要強(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">用戶(hù)名:</td> <td><input type="text" name="user" id="user" class="input required" /> <p>用戶(hù)名為3-16個(gè)字符,可以為數(shù)字、字母、下劃線以及中文</p></td> </tr> <tr> <td align="right">密碼:</td> <td><input type="password" name="pass" id="pass" class="input required" /> <p>最小長(zhǎng)度:6 最大長(zhǎng)度:16</p> </td> </tr> <tr> <td align="right">確認(rèn)密碼:</td> <td><input type="password" name="repass" class="input required" /></td> </tr> </table> </form>
限于篇幅,本文的只截取了實(shí)例中HTML代碼的一小部分,詳細(xì)XHTML代碼可參看頁(yè)面DEMO源代碼。值得一提的是,我在給了標(biāo)簽一個(gè)“required”類(lèi)樣式,下文將會(huì)提到它的作用。
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ū)ο蟆1热珧?yàn)證用戶(hù)名的長(zhǎng)度和不允許為空:
rules:{ user:{ required:true, maxlength:16, minlength:3 }, ...... }
其實(shí)我們?cè)赬HTML代碼中可以直接指定input的class屬性為required,作用是不允許為空,這樣在JS部分就不用重復(fù)寫(xiě)了。同樣的驗(yàn)證email等,直接設(shè)置input的class屬性為email。
messages:定義提示信息,key:value的形式key是要驗(yàn)證的元素,值是字符串或函數(shù),當(dāng)驗(yàn)證不通過(guò)時(shí)提示的信息。
messages:{ user:{ required:"用戶(hù)名不能為空!", remote:"該用戶(hù)名已存在,請(qǐng)換個(gè)其他的用戶(hù)名!" }, ...... }
本例中涉及的驗(yàn)證JS就是按照上面的規(guī)則進(jìn)行編寫(xiě)的,Validation插件封裝了好多基本的驗(yàn)證方式,如下:
required:true 必須有值,不能為空
remote:url 可以用于判斷用戶(hù)名等是否已經(jīng)存在,服務(wù)器端輸出true,表示驗(yàn)證通過(guò)
minlength:6 最小長(zhǎng)度為6
maxlength:16 最大長(zhǎng)度為16
rangelength:長(zhǎng)度范圍
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' 與哪個(gè)表單字段的值相等,常用于驗(yàn)證重復(fù)輸入密碼
此外,我還根據(jù)項(xiàng)目實(shí)際情況擴(kuò)展了幾個(gè)驗(yàn)證,驗(yàn)證的代碼在validate-ex.js,使用前需要先加載這個(gè)JS。它能提供以下驗(yàn)證:
userName:true 用戶(hù)名只能包括中文字、英文字母、數(shù)字和下劃線
isMobile:true 手機(jī)號(hào)碼驗(yàn)證
isPhone:true 大陸手機(jī)號(hào)碼驗(yàn)證
isZipCode:true 郵政編碼驗(yàn)證
isIdCardNo:true 大陸身份證號(hào)碼驗(yàn)證
ip:true IP地址驗(yàn)證
以上提供的驗(yàn)證方式基本上滿(mǎn)足我們?cè)诖蠖鄶?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)); }, "請(qǐng)正確填寫(xiě)您的郵政編碼!");
疑難問(wèn)題解決
1、在項(xiàng)目中遇到在驗(yàn)證用戶(hù)名是否存在時(shí),發(fā)現(xiàn)不支持中文輸入驗(yàn)證。我的解決辦法是給用戶(hù)名進(jìn)行encodeURIComponent編碼,后臺(tái)PHP再對(duì)接受的值進(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('daimajiayuan.com', 'jeymii', 'Peter', 'daimajiayuan'); $valid = 'true'; foreach($users as $user) { if( strtolower($user) == $request ) $valid = 'false'; } echo $valid; ?>
我使用的服務(wù)端程序是PHP,您也可以使用ASP,ASP.NET,JAVA等。此外本例為了演示,用戶(hù)名數(shù)據(jù)是直接寫(xiě)在服務(wù)端的,真正的應(yīng)用是從數(shù)據(jù)庫(kù)里取出的用戶(hù)名數(shù)據(jù),來(lái)和接收客戶(hù)端的數(shù)據(jù)進(jìn)行對(duì)比。
2、在驗(yàn)證checkbox和radio控件時(shí),驗(yàn)證信息不會(huì)出現(xiàn)在最后的控件文本后面,而是直接跟在第一個(gè)控件的后面,不符合我們的要求。
解決辦法是在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)擊“重置”按鈕,表單元素將會(huì)重置,但是再運(yùn)行Validation插件后,驗(yàn)證的提示信息并沒(méi)重置,就是那些提示信息沒(méi)有消失。感謝Validation提供了重置表單的方法:resetForm()
$("input:reset").click(function(){ validate.resetForm(); });
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
- jquery validation插件表單驗(yàn)證的一個(gè)例子
- Jquery Validation插件防止重復(fù)提交表單的解決方法
- jQuery Validation插件remote驗(yàn)證方式的Bug解決
- JQuery的Validation插件中Remote驗(yàn)證的中文問(wèn)題
- jQuery Validation實(shí)例代碼 讓驗(yàn)證變得如此容易
- ASP.NET jQuery 實(shí)例11 通過(guò)使用jQuery validation插件簡(jiǎn)單實(shí)現(xiàn)用戶(hù)登錄頁(yè)面驗(yàn)證功能
- ASP.NET jQuery 實(shí)例12 通過(guò)使用jQuery validation插件簡(jiǎn)單實(shí)現(xiàn)用戶(hù)注冊(cè)頁(yè)面驗(yàn)證功能
- ASP.NET jQuery 實(shí)例17 通過(guò)使用jQuery validation插件校驗(yàn)ListBox
- ASP.NET jQuery 實(shí)例18 通過(guò)使用jQuery validation插件校驗(yàn)DropDownList
- 修改jQuery Validation里默認(rèn)的驗(yàn)證方法
- ASP.NET中實(shí)現(xiàn)jQuery Validation-Engine的Ajax驗(yàn)證
- jquery validation驗(yàn)證身份證號(hào),護(hù)照,電話(huà)號(hào)碼,email(實(shí)例代碼)
- .NET驗(yàn)證組件Fluent Validation使用指南
- jQuery驗(yàn)證插件validation使用指南
- jquery插件validation實(shí)現(xiàn)驗(yàn)證身份證號(hào)等
- 支持ASP.NET MVC、WebFroM的表單驗(yàn)證框架ValidationSuar使用介紹
- 表單驗(yàn)證插件Validation應(yīng)用的實(shí)例講解
相關(guān)文章
jQuery實(shí)現(xiàn)簡(jiǎn)單登錄條件判斷
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)簡(jiǎn)單登錄條件判斷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03jQuery UI Dialog控件中的表單無(wú)法正常提交的解決方法
研究了頁(yè)面源碼后發(fā)現(xiàn),jQuery UI Dialog控件初始化時(shí)動(dòng)態(tài)生成的HTML元素被添加到頁(yè)面的尾部、form元素的后面,而原始的Dialog模板部分(其內(nèi)包含表單元素)也被移到了 動(dòng)態(tài)生成的HTML元素內(nèi)。2010-12-12jQuery插件slick實(shí)現(xiàn)響應(yīng)式移動(dòng)端幻燈片圖片切換特效
jQuery插件slick是一款響應(yīng)式、適用于移動(dòng)設(shè)備觸摸屏、可滑動(dòng)顯示的jQuery幻燈片插件。該幻燈片插件可以設(shè)置多種顯示效果,可以自動(dòng)播放,是一款移動(dòng)優(yōu)先的jQuery幻燈片插件。2015-04-04jQuery查找和過(guò)濾_動(dòng)力節(jié)點(diǎn)節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了jQuery查找和過(guò)濾的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07用jQuery解決IE不支持的option disable屬性
使用jQuery解決IE不支持的option disable屬性2009-05-05jquery實(shí)現(xiàn)簡(jiǎn)易的移動(dòng)端驗(yàn)證表單
本文給大家匯總介紹了幾個(gè)常用的jquery實(shí)現(xiàn)簡(jiǎn)易的移動(dòng)端驗(yàn)證表單,非常的實(shí)用,有需要的小伙伴可以進(jìn)來(lái)參考下。2015-11-11jquery獲取form表單input元素值的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇jquery獲取form表單input元素值的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05jQuery 實(shí)現(xiàn)左右兩側(cè)菜單添加、移除功能
本文通過(guò)實(shí)例代碼給大家分享了jQuery 實(shí)現(xiàn)左右兩側(cè)菜單添加、移除功能,需要的朋友參考下吧2018-01-01