jQuery Validate初步體驗(二)
在上篇文章給大家介紹了jQuery Validate初步體驗(一) ,本文繼續(xù)給大家分享jquery validate相關知識,對本文感興趣的朋友快來學習吧。
剛剛試了所謂的新版的用法。千萬別問我是多新,因為我也不知道。。。
<!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="用戶名長度必須是{0}到{1}個字符">
</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">確認密碼</label>
<input id="cconfirmpassword" name="confirmpassword" type="password" data-rule-required="true" data-rule-equalTo="#cpassword" data-msg-required="請再次輸入密碼" 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>
個人感覺這種用法比通過javascript自定義驗證規(guī)則,要方便和簡單多了。昨天在剛開始自定義的時候,總是無法正確的提示,當時完全不知道為什么。直到檢查了多遍才發(fā)現(xiàn),原來是因為我的rules里的鍵值對之間漏了一個逗號。所以,如果默認的校驗規(guī)則已經(jīng)滿足你的驗證需求,而你只是想改變一下提示語。那我個人建議你用這種新版的用法,當然也可以用 系列(一) 里的方法
二。具體看情況自己選擇。
還有我上面的提示都是默認的黑色,身為提示,那樣也太沒存在感了。
為了增加存在感,你只需要在<head></head>之間插入下面的代碼就可以了。
<style>
#registerForm label.error{
margin-left: 10px;
color:red;
}
</style>
請注意上面的#號后面跟著是表單的ID,你需要改成你自己相應的表單ID。我昨天嘗試的時候,找到的資料里寫的是#frm。當時我還以為#frm又是我沒接觸過的新用法呢,我還一直疑惑,為什么我的提示不顯示成紅色。基礎差哎。。。
如果默認的驗證規(guī)則已經(jīng)不能滿足你的需求,那么接下來,你就得自定義驗證規(guī)則了。
比如,這里有一個需求,要你檢查用戶輸入的郵編是否合法,這時你就得自定義驗證規(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));
}, "請正確填寫您的郵政編碼");
$("#registerForm").validate({
rules : {
zipCode : {
required : true,//對于required的提示語句沒有進行任何的處理,他會使用默認的英文的提示。
isZipCode : true//isZipCode為自定義的驗證規(guī)則
}
},
messages : {//當你不寫提示語句,他會使用上面方法返回的提示。
zipCode : {
isZipCode : '請輸入正確的郵編'
}
}
});
});
</script>
<style>
#registerForm label.error {
margin-left: 10px;
color: red;
}
</style>
</head>
<body>
<form id="registerForm" method="get" action="">
<fieldset>
<p>
<label for="czipCode">中國郵編</label>
<input id="czipCode" name="zipCode" />
</p>
<p>
<input type="submit" value="提交">
</p>
</fieldset>
</form>
</body>
</html>
當然,你也可以把這個驗證規(guī)則提取出來存到一個JS文件里,然后在要用的地方引入JS文件。
jQuery.validator.addMethod("isZipCode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "請正確填寫您的郵政編碼");
<!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,//對于required的提示語句沒有進行任何的處理,他會使用默認的英文的提示。
isZipCode : true//isZipCode為自定義的驗證規(guī)則
}
},
messages : {//當你不寫提示語句,他會使用方法返回的提示。
zipCode : {
isZipCode : '請輸入正確的郵編'
}
}
});
});
</script>
<style>
#registerForm label.error {
margin-left: 10px;
color: red;
}
</style>
</head>
<body>
<form id="registerForm" method="get" action="">
<fieldset>
<p>
<label for="czipCode">中國郵編</label>
<input id="czipCode" name="zipCode" />
</p>
<p>
<input type="submit" value="提交">
</p>
</fieldset>
</form>
</body>
</html>
接下來,就要好好說說jQuery.validator.addMethod() 這個方法,這個方法一共有三個參數(shù)。
第一個參數(shù) :“isZipCode” 是定義方法名,必須保證方法名唯一。
第二個參數(shù):是一個回調(diào)(callback)函數(shù)。
這個回調(diào)函數(shù)有三個參數(shù):
第一個:value ,是當前被驗證的元素的值。
第二個:element,是當前被驗證的元素。
第三個:param,是傳入的參數(shù),例如: minlength : 6 里的參數(shù)為6; rangelength:[2,10] 里的參數(shù)為2和10。當你沒有傳入?yún)?shù),這個可以省略不寫。
在這個回調(diào)函數(shù)里有一個this.optional(element)函數(shù)要特別注意。當表單的輸入值為空時,即element的值為空,this.optional(element)的返回值為true,類似于判空操作,也就是說該表單輸入項不是必填項,當不填時通過了驗證。如果element的值不為空,this.optional(element)的返回值就是false,這時就要根據(jù) || 后面的驗證來判斷最終的返回為true 或false。所以當某個輸入項不是必填項但如果填寫了又需要按照一定的規(guī)則來驗證的時候,一定要記得帶上this.optional(element)。
第三個參數(shù):驗證的提示信息。
這個參數(shù)可以直接是一句提示信息,例如,"這是必填字段";也可以通過創(chuàng)建函數(shù)jQuery.validator.format(value)來顯示,例如,$.validator.format("請輸入長度在 {0} 到 {1} 之間的字符串"),其中 {0} {1} 代表該方法的參數(shù),也就是回調(diào)(callback)函數(shù)里的第三個參數(shù)param。
官網(wǎng)提供的additional-methods.js里包含一些常用的驗證方式,比如lettersonly,ziprange,nowhitespace等,但我粗略的看了一下,發(fā)現(xiàn)大部分只是僅供參考,實用性不強,不能直接使用。
我整理了幾個網(wǎng)上找到的驗證規(guī)則,當然也僅供參考。驗證規(guī)則的核心就是正則表達式,這個得學。
// 郵政編碼驗證
jQuery.validator.addMethod("isZipCode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "請正確填寫您的郵政編碼");
// 手機號碼驗證
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));
}, "手機號碼格式錯誤");
// QQ號碼驗證
jQuery.validator.addMethod("qq", function(value, element) {
var tel = /^[1-9]\d{4,10}$/;
return this.optional(element) || (tel.test(value));
}, "qq號碼格式錯誤");
// IP地址驗證
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地址格式錯誤");
// 字母和數(shù)字的驗證
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)");
// 中文的驗證
jQuery.validator.addMethod("chinese", function(value, element) {
var chinese = /^[\u4e00-\u9fa5]+$/;
return this.optional(element) || (chinese.test(value));
}, "只能輸入中文");
如果有什么地方寫錯了或者寫的不夠好,希望大大們能提出來。還有,歡迎留言評論,一起學習。
- jquery validate.js表單驗證的基本用法入門
- jQuery validate 中文API 附validate.js中文api手冊
- JQuery擴展插件Validate—4設置錯誤提示的樣式
- JQuery擴展插件Validate—6 radio、checkbox、select的驗證
- jQuery EasyUI API 中文文檔 - ValidateBox驗證框
- jQuery.Validate驗證庫的使用介紹
- jquery validate添加自定義驗證規(guī)則(驗證郵箱 郵政編碼)
- 使用jquery.validate自定義方法實現(xiàn)"手機號碼或者固話至少填寫一個"的邏輯驗證
- jquery.validate使用時遇到的問題
- jQuery Validate初步體驗(一)
相關文章
jquery實現(xiàn)的元素的left增加N像素 鼠標移開會慢慢的移動到原來的位置
鼠標移動上去,元素的left增加N像素,鼠標移開會慢慢的移動到原來的位置2010-03-03
jquery的ajax異步請求接收返回json數(shù)據(jù)實例
jquery的ajax異步請求接收返回json數(shù)據(jù)方法設置簡單,一個是服務器處理程序是返回json數(shù)據(jù),另一種就是ajax發(fā)送設置的datatype設置為jsonp格式數(shù)據(jù)或json格式都可以。這篇文章對此進行了實例介紹,需要的朋友可以參考下2014-06-06

