jQuery驗(yàn)證插件 Validate詳解
最常使用JavaScript的場(chǎng)合就是表單的驗(yàn)證,而jQuery作為一個(gè)優(yōu)秀的JavaScript庫(kù),也提供了一個(gè)優(yōu)秀的表單驗(yàn)證插件----Validation。Validation是歷史最悠久的jQuery插件之一,經(jīng)過(guò)了全球范圍內(nèi)不同項(xiàng)目的驗(yàn)證,并得到了許多Web開(kāi)發(fā)者的好評(píng)。作為一個(gè)標(biāo)準(zhǔn)的驗(yàn)證方法庫(kù),Validation擁有如下特點(diǎn):
1.內(nèi)置驗(yàn)證規(guī)則: 擁有必填、數(shù)字、Email、URL和信用卡號(hào)碼等19類(lèi)內(nèi)置驗(yàn)證規(guī)則
2.自定義驗(yàn)證規(guī)則: 可以很方便地自定義驗(yàn)證規(guī)則
3.簡(jiǎn)單強(qiáng)大的驗(yàn)證信息提示: 默認(rèn)了驗(yàn)證信息提示,并提供自定義覆蓋默認(rèn)的提示信息的功能
4.實(shí)時(shí)驗(yàn)證: 可能通過(guò)keyup或blur事件觸發(fā)驗(yàn)證,而不僅僅在表單提交的時(shí)候驗(yàn)證
validate.js下載地址: http://plugins.jquery.com/project/validate
metadata.js下載地址: http://plugins.jquery.com/project/metadata
使用方法:
1.引入jQuery庫(kù)和Validation插件
<script src="scripts/jquery-1.6.4.js" type="text/javascript"></script>
<script src="scripts/jquery.validate.js" type="text/javascript"></script>
2.確定哪個(gè)表單需要被驗(yàn)證
<script type="text/javascript">
////<![CDATA[
$(document).ready(function(){
$("#commentForm").validate();
});
//]]>
</script>
3.針對(duì)不同的字段,進(jìn)行驗(yàn)證規(guī)則編碼,設(shè)置字段相應(yīng)的屬性
class="required" 必須填寫(xiě)
class="required email" 必須填寫(xiě)且內(nèi)容符合Email格式驗(yàn)證
class="url" 符合URL格式驗(yàn)證
minlength="2" 最小長(zhǎng)度為2
可驗(yàn)證的規(guī)則有19種:
[javascript] view plaincopyprint?
required: 必選字段
remote: "請(qǐng)修正該字段",
email: 電子郵件驗(yàn)證
url: 網(wǎng)址驗(yàn)證
date: 日期驗(yàn)證
dateISO: 日期 (ISO)驗(yàn)證
dateDE:
number: 數(shù)字驗(yàn)證
numberDE:
digits: 只能輸入整數(shù)
creditcard: 信用卡號(hào)驗(yàn)證
equalTo: ”請(qǐng)?jiān)俅屋斎胂嗤闹怠膀?yàn)證
accept: 擁有合法后綴名的字符串驗(yàn)證
maxlength/minlength: 最大/最小長(zhǎng)度驗(yàn)證
rangelength: 字符串長(zhǎng)度范圍驗(yàn)證
range: 數(shù)字范圍驗(yàn)證
max/min: 最大值/最小值驗(yàn)證
需要引入的js
<script type="text/javascript" src="../../scripts/jquery-1.3.1.js"></script>
<script type="text/javascript" src="lib/jquery.validate.js"></script>
初始化的HTML
<script type="text/javascript">
$(function(){
$("#commentForm").validate()
})
</script>
<form class="cmxform" id="commentForm" method="get" action="">
<fieldset>
<legend>一個(gè)簡(jiǎn)單的validate驗(yàn)證帶驗(yàn)證提示的評(píng)論例子</legend>
<p>
<label for="cusername">姓名</label>
<em>*</em><input id="cusername" name="username" size="25" class="required" minlength="2" />
</p>
<p>
<label for="cemail">電子郵件</label>
<em>*</em><input id="cemail" name="email" size="25" class="required email" />
</p>
<p>
<label for="curl">網(wǎng)址</label>
<em> </em><input id="curl" name="url" size="25" class="url" />
</p>
<p>
<label for="ccomment">你的評(píng)論</label>
<em>*</em><textarea id="ccomment" name="comment" cols="22" class="required" ></textarea>
</p>
<p>
<input class="submit" type="submit" value="提交"/>
</p>
首先看默認(rèn)設(shè)置的規(guī)格
序號(hào) | 規(guī)則 | 描述 |
---|---|---|
1 | required:true | 必須輸入的字段。 |
2 | remote:"check.php" | 使用 ajax 方法調(diào)用 check.php 驗(yàn)證輸入值。 |
3 | email:true | 必須輸入正確格式的電子郵件。 |
4 | url:true | 必須輸入正確格式的網(wǎng)址。 |
5 | date:true | 必須輸入正確格式的日期。日期校驗(yàn) ie6 出錯(cuò),慎用。 |
6 | dateISO:true | 必須輸入正確格式的日期(ISO),例如:2009-06-23,1998/01/22。只驗(yàn)證格式,不驗(yàn)證有效性。 |
7 | number:true | 必須輸入合法的數(shù)字(負(fù)數(shù),小數(shù))。 |
8 | digits:true | 必須輸入整數(shù)。 |
9 | creditcard: | 必須輸入合法的信用卡號(hào)。 |
10 | equalTo:"#field" | 輸入值必須和 #field 相同。 |
11 | accept: | 輸入擁有合法后綴名的字符串(上傳文件的后綴)。 |
12 | maxlength:5 | 輸入長(zhǎng)度最多是 5 的字符串(漢字算一個(gè)字符)。 |
13 | minlength:10 | 輸入長(zhǎng)度最小是 10 的字符串(漢字算一個(gè)字符)。 |
14 | rangelength:[5,10] | 輸入長(zhǎng)度必須介于 5 和 10 之間的字符串(漢字算一個(gè)字符)。 |
15 | range:[5,10] | 輸入值必須介于 5 和 10 之間。 |
16 | max:5 | 輸入值不能大于 5。 |
17 | min:10 | 輸入值不能小于 10。 |
required表示必須填寫(xiě)的
email表示必須正確的郵箱
把驗(yàn)證的規(guī)格寫(xiě)在HTML內(nèi)的class內(nèi),方法欠妥,后期的維護(hù)增加成本,沒(méi)有實(shí)現(xiàn)行為與結(jié)構(gòu)的分離
所以,可以想把HTML內(nèi)的class都清空,如下:
<form class="cmxform" id="commentForm" method="get" action="">
<fieldset>
<legend>一個(gè)簡(jiǎn)單的validate驗(yàn)證帶驗(yàn)證提示的評(píng)論例子</legend>
<p>
<label for="cusername">姓名</label>
<em>*</em><input id="cusername" name="username" size="25" />
</p>
<p>
<label for="cemail">電子郵件</label>
<em>*</em><input id="cemail" name="email" size="25" />
</p>
<p>
<label for="curl">網(wǎng)址</label>
<em> </em><input id="curl" name="url" size="25" />
</p>
<p>
<label for="ccomment">你的評(píng)論</label>
<em>*</em><textarea id="ccomment" name="comment" cols="22" ></textarea>
</p>
<p>
<input class="submit" type="submit" value="提交"/>
</p>
js
$(document).ready(function(){
$("#commentForm").validate({
rules:{
username:{
required:true,
minlength:2
},
email:{
required:true,
email:true
},
url:"url",
comment:"required",
valcode: {
formula: "7+9"
}
}
});
});
</script>
因?yàn)槟J(rèn)的提示是英文的,可以改寫(xiě)成
jQuery.extend(jQuery.validator.messages, {
required: "必選字段",
remote: "請(qǐng)修正該字段",
email: "請(qǐng)輸入正確格式的電子郵件",
url: "請(qǐng)輸入合法的網(wǎng)址",
date: "請(qǐng)輸入合法的日期",
dateISO: "請(qǐng)輸入合法的日期 (ISO).",
number: "請(qǐng)輸入合法的數(shù)字",
digits: "只能輸入整數(shù)",
creditcard: "請(qǐng)輸入合法的信用卡號(hào)",
equalTo: "請(qǐng)?jiān)俅屋斎胂嗤闹?,
accept: "請(qǐng)輸入擁有合法后綴名的字符串",
maxlength: jQuery.format("請(qǐng)輸入一個(gè)長(zhǎng)度最多是 {0} 的字符串"),
minlength: jQuery.format("請(qǐng)輸入一個(gè)長(zhǎng)度最少是 {0} 的字符串"),
rangelength: jQuery.format("請(qǐng)輸入一個(gè)長(zhǎng)度介于 {0} 和 {1} 之間的字符串"),
range: jQuery.format("請(qǐng)輸入一個(gè)介于 {0} 和 {1} 之間的值"),
max: jQuery.format("請(qǐng)輸入一個(gè)最大為 {0} 的值"),
min: jQuery.format("請(qǐng)輸入一個(gè)最小為 {0} 的值")
});
建議新建一個(gè)js,放到validate.js 下面.
關(guān)于提示的美化
errorElement:"em"
創(chuàng)建一個(gè)標(biāo)簽,可以自定義
success:function(label){
label.text(" ").addClass('success')
}
這里的參數(shù)label是指向創(chuàng)建的標(biāo)簽,這里也就是”em“ 然后情況自己的內(nèi)容,在加上自己的class就可以了
完整的js
$("#commentForm").validate({
rules:{
username:{
required:true,
minlength:2
},
email:{
required:true,
email:true
},
url:"url",
comment:"required",
},
errorElement:"em",
success:function(label){
label.text(" ").addClass('success')
}
});
相對(duì)應(yīng)的css
em.error {
background:url("images/unchecked.gif") no-repeat 0px 0px;
padding-left: 16px;
}
em.success {
background:url("images/checked.gif") no-repeat 0px 0px;
padding-left: 16px;
}
.success放到.error下面。。。唔唔。。具體的情況。。只可體會(huì)不可言會(huì)。。唔。。
在做項(xiàng)目的過(guò)程中千變?nèi)f化,有時(shí)候要滿(mǎn)足不同的需求,validate也可以單獨(dú)的修改驗(yàn)證的信息。。
例如:
messages:{
username:{
required:"主人,我要填的滿(mǎn)滿(mǎn)的",
minlength:"哎唷,長(zhǎng)度不夠耶"
}
}
完整的js
$("#commentForm").validate({
rules:{
username:{
required:true,
minlength:2
},
email:{
required:true,
email:true
},
url:"url",
comment:"required",
valcode: {
formula: "7+9"
}
},
messages:{
username:{
required:"主人,我要填的滿(mǎn)滿(mǎn)的",
minlength:"哎唷,長(zhǎng)度不夠耶"
}
},
errorElement:"em",
success:function(label){
label.text(" ").addClass('success')
}
});
這里就可以啦。
關(guān)于自定義驗(yàn)證規(guī)則
增加一段HTML代碼
<p>
<label for="cvalcode">驗(yàn)證碼</label>
<input id="valcode" name="valcode" />=7+9
</p>
自定一個(gè)規(guī)則
$.validator.addMethod("formula",function(value,element,param){
return value==eval(param)
},"請(qǐng)正確輸入驗(yàn)證信息");
formula是需要驗(yàn)證方法的名字 好比如required 必須的。
value返回的當(dāng)前input的value值
param返回的是當(dāng)前自定義的驗(yàn)證格式 好比如:7+9
在試用了eval方法 讓字符串相加
完整的js
$.validator.addMethod("formula",function(value,element,param){
return value==eval(param)
},"請(qǐng)正確輸入驗(yàn)證信息");
$("#commentForm").validate({
rules:{
username:{
required:true,
minlength:2
},
email:{
required:true,
email:true
},
url:"url",
comment:"required",
valcode: {
formula: "7+9"
}
},
messages:{
username:{
required:"主人,我要填的滿(mǎn)滿(mǎn)的",
minlength:"哎唷,長(zhǎng)度不夠耶"
}
},
errorElement:"em",
success:function(label){
label.text(" ").addClass('success')
}
});
額。。沒(méi)了 學(xué)的不深,這是基礎(chǔ)的一部分。。還會(huì)繼續(xù)深入學(xué)習(xí)去。掰掰( ^_^ )/~~拜拜
- jQuery驗(yàn)證插件validate使用方法詳解
- jQuery 表單驗(yàn)證插件formValidation實(shí)現(xiàn)個(gè)性化錯(cuò)誤提示
- jQuery驗(yàn)證插件validation使用指南
- jquery表單驗(yàn)證插件(jquery.validate.js)的3種使用方式
- jQuery 驗(yàn)證插件 Web前端設(shè)計(jì)模式(asp.net)
- jQuery formValidator表單驗(yàn)證插件開(kāi)源了 含API幫助、源碼、示例
- jquery表單驗(yàn)證插件formValidator使用方法
- jQuery表單驗(yàn)證插件formValidator(改進(jìn)版)
- jQuery Validate表單驗(yàn)證插件 添加class屬性形式的校驗(yàn)
- jquery實(shí)現(xiàn)簡(jiǎn)易驗(yàn)證插件封裝
相關(guān)文章
Jquery上傳插件 uploadify v3.1使用說(shuō)明
uploadify ,簡(jiǎn)單實(shí)用的flash上傳組件,兼容性良好。 現(xiàn)已有html5版本2012-06-06jQuery實(shí)現(xiàn)當(dāng)拉動(dòng)滾動(dòng)條到底部加載數(shù)據(jù)的方法分析
這篇文章主要介紹了jQuery實(shí)現(xiàn)當(dāng)拉動(dòng)滾動(dòng)條到底部加載數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了jQuery針對(duì)滾動(dòng)事件的監(jiān)聽(tīng)、響應(yīng)及數(shù)據(jù)加載相關(guān)操作技巧,需要的朋友可以參考下2019-01-01window.open不被攔截的實(shí)現(xiàn)代碼
打開(kāi)空白新窗口,再給新窗口的localtion賦值,需要的朋友可以參考下2012-08-08jQuery實(shí)現(xiàn)選項(xiàng)卡嵌套效果
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)選項(xiàng)卡嵌套效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03使用jQuery在移動(dòng)頁(yè)面上添加按鈕和給按鈕添加圖標(biāo)
這篇文章主要介紹了使用jQuery在移動(dòng)頁(yè)面上增加按鈕和給按鈕添加圖標(biāo)的方法,用到了針對(duì)移動(dòng)開(kāi)發(fā)的jQuery mobile庫(kù),需要的朋友可以參考下2015-12-12JQuery 獲取和設(shè)置Select選項(xiàng)的代碼
JQuery獲取和設(shè)置Select選項(xiàng)2010-02-02jQuery實(shí)現(xiàn)frame之間互通的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)frame之間互通的方法,結(jié)合實(shí)例形式分析了jQuery實(shí)現(xiàn)frame父子框架之間的調(diào)用操作實(shí)現(xiàn)方法,需要的朋友可以參考下2017-06-06