jQuery Validate初步體驗(yàn)(二)
在上篇文章給大家介紹了jQuery Validate初步體驗(yàn)(一) ,本文繼續(xù)給大家分享jquery validate相關(guān)知識(shí),對(duì)本文感興趣的朋友快來學(xué)習(xí)吧。
剛剛試了所謂的新版的用法。千萬(wàn)別問我是多新,因?yàn)槲乙膊恢?。?!?br />
<!DOCTYPE html> <html> <head> <script src="js/jquery.js"></script> <script src="js/jquery.validate.js"></script> <script> $().ready(function() { $("#registerForm").validate(); }); </script> </head> <body> <form id="registerForm" method="get" action=""> <fieldset> <p> <label for="cusername">用戶名</label> <input id="cusername" name="username" type="text" data-rule-required="true" data-rule-rangelength="[2,10]" data-msg-required="用戶名不能為空" data-msg-rangelength="用戶名長(zhǎng)度必須是{0}到{1}個(gè)字符"> </p> <p> <label for="cpassword">密碼</label> <input id="cpassword" name="password" type="password" data-rule-required="true" data-rule-minlength="6" data-msg-required="密碼不能為空" data-msg-minlength="密碼必須不少于{0}位"> </p> <p> <label for="cconfirmpassword">確認(rèn)密碼</label> <input id="cconfirmpassword" name="confirmpassword" type="password" data-rule-required="true" data-rule-equalTo="#cpassword" data-msg-required="請(qǐng)?jiān)俅屋斎朊艽a" data-msg-equalTo="兩次輸入的密碼不一致"> </p> <p> <label for="cemail">郵箱</label> <input id="cemail" name="email" data-rule-required="true" data-rule-email="true" data-msg-required="郵箱不能為空" data-msg-email="郵箱的格式不正確"/> </p> <p> <input type="submit" value="提交"> </p> </fieldset> </form> </body> </html>
個(gè)人感覺這種用法比通過javascript自定義驗(yàn)證規(guī)則,要方便和簡(jiǎn)單多了。昨天在剛開始自定義的時(shí)候,總是無法正確的提示,當(dāng)時(shí)完全不知道為什么。直到檢查了多遍才發(fā)現(xiàn),原來是因?yàn)槲业膔ules里的鍵值對(duì)之間漏了一個(gè)逗號(hào)。所以,如果默認(rèn)的校驗(yàn)規(guī)則已經(jīng)滿足你的驗(yàn)證需求,而你只是想改變一下提示語(yǔ)。那我個(gè)人建議你用這種新版的用法,當(dāng)然也可以用 系列(一) 里的方法
二。具體看情況自己選擇。
還有我上面的提示都是默認(rèn)的黑色,身為提示,那樣也太沒存在感了。
為了增加存在感,你只需要在<head></head>之間插入下面的代碼就可以了。
<style> #registerForm label.error{ margin-left: 10px; color:red; } </style>
請(qǐng)注意上面的#號(hào)后面跟著是表單的ID,你需要改成你自己相應(yīng)的表單ID。我昨天嘗試的時(shí)候,找到的資料里寫的是#frm。當(dāng)時(shí)我還以為#frm又是我沒接觸過的新用法呢,我還一直疑惑,為什么我的提示不顯示成紅色?;A(chǔ)差哎。。。
如果默認(rèn)的驗(yàn)證規(guī)則已經(jīng)不能滿足你的需求,那么接下來,你就得自定義驗(yàn)證規(guī)則了。
比如,這里有一個(gè)需求,要你檢查用戶輸入的郵編是否合法,這時(shí)你就得自定義驗(yàn)證規(guī)則了,使用的方法是jQuery.validator.addMethod()。
<!DOCTYPE html> <html> <head> <script src="js/jquery.js"></script> <script src="js/jquery.validate.js"></script> <script> $().ready(function() { jQuery.validator.addMethod("isZipCode", function(value, element) { var tel = /^[0-9]{6}$/; return this.optional(element) || (tel.test(value)); }, "請(qǐng)正確填寫您的郵政編碼"); $("#registerForm").validate({ rules : { zipCode : { required : true,//對(duì)于required的提示語(yǔ)句沒有進(jìn)行任何的處理,他會(huì)使用默認(rèn)的英文的提示。 isZipCode : true//isZipCode為自定義的驗(yàn)證規(guī)則 } }, messages : {//當(dāng)你不寫提示語(yǔ)句,他會(huì)使用上面方法返回的提示。 zipCode : { isZipCode : '請(qǐng)輸入正確的郵編' } } }); }); </script> <style> #registerForm label.error { margin-left: 10px; color: red; } </style> </head> <body> <form id="registerForm" method="get" action=""> <fieldset> <p> <label for="czipCode">中國(guó)郵編</label> <input id="czipCode" name="zipCode" /> </p> <p> <input type="submit" value="提交"> </p> </fieldset> </form> </body> </html>
當(dāng)然,你也可以把這個(gè)驗(yàn)證規(guī)則提取出來存到一個(gè)JS文件里,然后在要用的地方引入JS文件。
jQuery.validator.addMethod("isZipCode", function(value, element) { var tel = /^[0-9]{6}$/; return this.optional(element) || (tel.test(value)); }, "請(qǐng)正確填寫您的郵政編碼"); <!DOCTYPE html> <html> <head> <script src="js/jquery.js"></script> <script src="js/jquery.validate.js"></script> <script src="js/validate.expand.js"></script> <script> $().ready(function() { $("#registerForm").validate({ rules : { zipCode : { required : true,//對(duì)于required的提示語(yǔ)句沒有進(jìn)行任何的處理,他會(huì)使用默認(rèn)的英文的提示。 isZipCode : true//isZipCode為自定義的驗(yàn)證規(guī)則 } }, messages : {//當(dāng)你不寫提示語(yǔ)句,他會(huì)使用方法返回的提示。 zipCode : { isZipCode : '請(qǐng)輸入正確的郵編' } } }); }); </script> <style> #registerForm label.error { margin-left: 10px; color: red; } </style> </head> <body> <form id="registerForm" method="get" action=""> <fieldset> <p> <label for="czipCode">中國(guó)郵編</label> <input id="czipCode" name="zipCode" /> </p> <p> <input type="submit" value="提交"> </p> </fieldset> </form> </body> </html>
接下來,就要好好說說jQuery.validator.addMethod() 這個(gè)方法,這個(gè)方法一共有三個(gè)參數(shù)。
第一個(gè)參數(shù) :“isZipCode” 是定義方法名,必須保證方法名唯一。
第二個(gè)參數(shù):是一個(gè)回調(diào)(callback)函數(shù)。
這個(gè)回調(diào)函數(shù)有三個(gè)參數(shù):
第一個(gè):value ,是當(dāng)前被驗(yàn)證的元素的值。
第二個(gè):element,是當(dāng)前被驗(yàn)證的元素。
第三個(gè):param,是傳入的參數(shù),例如: minlength : 6 里的參數(shù)為6; rangelength:[2,10] 里的參數(shù)為2和10。當(dāng)你沒有傳入?yún)?shù),這個(gè)可以省略不寫。
在這個(gè)回調(diào)函數(shù)里有一個(gè)this.optional(element)函數(shù)要特別注意。當(dāng)表單的輸入值為空時(shí),即element的值為空,this.optional(element)的返回值為true,類似于判空操作,也就是說該表單輸入項(xiàng)不是必填項(xiàng),當(dāng)不填時(shí)通過了驗(yàn)證。如果element的值不為空,this.optional(element)的返回值就是false,這時(shí)就要根據(jù) || 后面的驗(yàn)證來判斷最終的返回為true 或false。所以當(dāng)某個(gè)輸入項(xiàng)不是必填項(xiàng)但如果填寫了又需要按照一定的規(guī)則來驗(yàn)證的時(shí)候,一定要記得帶上this.optional(element)。
第三個(gè)參數(shù):驗(yàn)證的提示信息。
這個(gè)參數(shù)可以直接是一句提示信息,例如,"這是必填字段";也可以通過創(chuàng)建函數(shù)jQuery.validator.format(value)來顯示,例如,$.validator.format("請(qǐng)輸入長(zhǎng)度在 {0} 到 {1} 之間的字符串"),其中 {0} {1} 代表該方法的參數(shù),也就是回調(diào)(callback)函數(shù)里的第三個(gè)參數(shù)param。
官網(wǎng)提供的additional-methods.js里包含一些常用的驗(yàn)證方式,比如lettersonly,ziprange,nowhitespace等,但我粗略的看了一下,發(fā)現(xiàn)大部分只是僅供參考,實(shí)用性不強(qiáng),不能直接使用。
我整理了幾個(gè)網(wǎng)上找到的驗(yàn)證規(guī)則,當(dāng)然也僅供參考。驗(yàn)證規(guī)則的核心就是正則表達(dá)式,這個(gè)得學(xué)。
// 郵政編碼驗(yàn)證 jQuery.validator.addMethod("isZipCode", function(value, element) { var tel = /^[0-9]{6}$/; return this.optional(element) || (tel.test(value)); }, "請(qǐng)正確填寫您的郵政編碼"); // 手機(jī)號(hào)碼驗(yàn)證 jQuery.validator.addMethod("mobile", function(value, element) { var length = value.length; var mobile = /^(13[0-9]|14[0-9]|15[0-9]|18[0-9])\d{8}$/; return this.optional(element) || (length == 11 && mobile.test(value)); }, "手機(jī)號(hào)碼格式錯(cuò)誤"); // QQ號(hào)碼驗(yàn)證 jQuery.validator.addMethod("qq", function(value, element) { var tel = /^[1-9]\d{4,10}$/; return this.optional(element) || (tel.test(value)); }, "qq號(hào)碼格式錯(cuò)誤"); // IP地址驗(yàn)證 jQuery.validator.addMethod("ip", function(value, element) { var ip = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; return this.optional(element) || (ip.test(value) && (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256)); }, "Ip地址格式錯(cuò)誤"); // 字母和數(shù)字的驗(yàn)證 jQuery.validator.addMethod("chrnum", function(value, element) { var chrnum = /^([a-zA-Z0-9]+)$/; return this.optional(element) || (chrnum.test(value)); }, "只能輸入數(shù)字和字母(字符A-Z, a-z, 0-9)"); // 中文的驗(yàn)證 jQuery.validator.addMethod("chinese", function(value, element) { var chinese = /^[\u4e00-\u9fa5]+$/; return this.optional(element) || (chinese.test(value)); }, "只能輸入中文");
如果有什么地方寫錯(cuò)了或者寫的不夠好,希望大大們能提出來。還有,歡迎留言評(píng)論,一起學(xué)習(xí)。
- jquery validate.js表單驗(yàn)證的基本用法入門
- jQuery validate 中文API 附validate.js中文api手冊(cè)
- JQuery擴(kuò)展插件Validate—4設(shè)置錯(cuò)誤提示的樣式
- JQuery擴(kuò)展插件Validate—6 radio、checkbox、select的驗(yàn)證
- jQuery EasyUI API 中文文檔 - ValidateBox驗(yàn)證框
- jQuery.Validate驗(yàn)證庫(kù)的使用介紹
- jquery validate添加自定義驗(yàn)證規(guī)則(驗(yàn)證郵箱 郵政編碼)
- 使用jquery.validate自定義方法實(shí)現(xiàn)"手機(jī)號(hào)碼或者固話至少填寫一個(gè)"的邏輯驗(yàn)證
- jquery.validate使用時(shí)遇到的問題
- jQuery Validate初步體驗(yàn)(一)
相關(guān)文章
jquery實(shí)現(xiàn)的元素的left增加N像素 鼠標(biāo)移開會(huì)慢慢的移動(dòng)到原來的位置
鼠標(biāo)移動(dòng)上去,元素的left增加N像素,鼠標(biāo)移開會(huì)慢慢的移動(dòng)到原來的位置2010-03-03jquery基礎(chǔ)教程之?dāng)?shù)組使用詳解
jQuery的數(shù)組處理、便捷、功能齊全。一步到位的封裝了很多原生JavaScript數(shù)組不能企及的功能。下面是jquery數(shù)組的使用詳解,需要的朋友可以參考下2014-03-03jQuery 防止相同的事件快速重復(fù)觸發(fā)方法
下面小編就為大家分享一篇jQuery 防止相同的事件快速重復(fù)觸發(fā)方法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02jQuery+ajax實(shí)現(xiàn)局部刷新的兩種方法
在項(xiàng)目中,經(jīng)常會(huì)用到ajax,比如實(shí)現(xiàn)局部刷新,比如需要前后端交互等,這里呢分享局部刷新的兩種方法,主要用的是ajax里面的.load()。感興趣的朋友一起看看吧2017-06-06jquery的ajax異步請(qǐng)求接收返回json數(shù)據(jù)實(shí)例
jquery的ajax異步請(qǐng)求接收返回json數(shù)據(jù)方法設(shè)置簡(jiǎn)單,一個(gè)是服務(wù)器處理程序是返回json數(shù)據(jù),另一種就是ajax發(fā)送設(shè)置的datatype設(shè)置為jsonp格式數(shù)據(jù)或json格式都可以。這篇文章對(duì)此進(jìn)行了實(shí)例介紹,需要的朋友可以參考下2014-06-06jQuery實(shí)現(xiàn)的導(dǎo)航條切換可顯示隱藏
用jQuery實(shí)現(xiàn)一些導(dǎo)航條切換,顯示隱藏,主要用到slideToggle( ),toggeClass( ),toggle()2014-10-10移動(dòng)端jQuery修正Web頁(yè)面滑動(dòng)時(shí)div問題的兩則實(shí)例
這篇文章主要介紹了移動(dòng)端jQuery修正Web頁(yè)面滑動(dòng)時(shí)div問題的兩則實(shí)例,分別針對(duì)頂部固定fixed不為0時(shí)滑動(dòng)出現(xiàn)的閃動(dòng)以及touchmove的受阻止的相關(guān)問題,需要的朋友可以參考下2016-05-05