Validation 表單驗證 插件 jQuery 驗證 數字 日期 (一)

一、validate是jQuery的一個表單驗證插件,它不僅實現了客戶端表單的多種驗證規則,而且,還是用ajax實現了服務器端遠程驗證。它內置有多種驗證規則,同時,可以很方便的定義自己的規則。在此,說明一些常用的功能,詳細的介紹,可以參考官方文檔。http://docs.jquery.com/Plugins/Validation

validation插件使用很簡單:
Javascript代碼
$("#formId").validate(
{
// 驗證規則
rules:
{},
// 驗證提示信息(失敗時)
message:{},
errorElement: 'span', // 放置錯誤信息的元素,可以是其他的。
errorPlacement: function(error,element) // 將錯誤提示信息放在什麼地方
{},
// 成功時執行
success: function(label)
{
label.text(" ") // 將錯誤內容清空,一定要是" "有空格,否則IE有問題。
.addClass("success");

}
});

$("#formId").validate(
{
// 驗證規則
rules:
{},
// 驗證提示信息(失敗時)
message:{},
errorElement: 'span', // 放置錯誤信息的元素,可以是其他的。
errorPlacement: function(error,element) // 將錯誤提示信息放在什麼地方
{},
// 成功時執行
success: function(label)
{
label.text(" ") // 將錯誤內容清空,一定要是" "有空格,否則IE有問題。
.addClass("success");

}
});

其中"formId"是表單的form元素的ID屬性。

rules和message分別都對應一個對象,該對象只包含屬性,其中,屬性名爲表單中input的name(包括select的name),值爲要應用的規則對象。如:
Javascript代碼
rules:{
userName:{
required:true,
maxlength:20,
emote: {
url: "ajax/validateUserName.action", //後臺處理程序
type: "post", //數據發送方式
dataType: "json", //接受數據格式
data: { //要傳遞的數據,默認已傳遞應用此規則的表單項
email: function() {
return $("#email").val();
}
}
}
}

rules:{
userName:{
required:true,
maxlength:20,
emote: {
url: "ajax/validateUserName.action", //後臺處理程序
type: "post", //數據發送方式
dataType: "json", //接受數據格式
data: { //要傳遞的數據,默認已傳遞應用此規則的表單項
email: function() {
return $("#email").val();
}
}
}
}


message對應是一樣的,只是把規則的值改爲提示信息,如:required:‘必填項'。

validation內置的驗證規則如下:

required:true 必填

minlength:最小長度

maxlength:最大長度

rangelength: [3,10] 長度介於 3 和 {1} 之間的字符串

range:[100,1000] 只能是100和 1000 之間的值”

min:最小值

max:最大值

email:true 驗證郵箱

url:true 驗證是否是合法的網址

date:true 驗證是否是合法的日期 new Date() 類型格式

dateISO:true 驗證是否是合法的日期 年/月/日 或 年-月-日 格式

number:true 驗證是否是合法的數字

digits:true 驗證是否爲整數

creditcard: 驗證合法的信用卡號

equalTo:”要匹配的元素” 如:’#cnfpass’ , 驗證兩次輸入值是否相同

accept: “gif|png|jpg” 驗證是否是合法後綴名的字符串
Javascript代碼
remote: {
url: "ajax/validateUserName.action", //後臺處理程序
type: "post", //數據發送方式
dataType: "json", //接受數據格式
data: { //要傳遞的數據,默認已傳遞應用此規則的表單項
email: function() {
return $("#email").val();
}
}

remote: {
url: "ajax/validateUserName.action", //後臺處理程序
type: "post", //數據發送方式
dataType: "json", //接受數據格式
data: { //要傳遞的數據,默認已傳遞應用此規則的表單項
email: function() {
return $("#email").val();
}
}

注意:remote是遠程驗證:比如註冊驗證用戶名是否已被註冊,返回值只能是true(驗證成功)或false(驗證失敗)。

除了內置的驗證規則,validation還允許自定義驗證規則。這是通過validation的addMethod方法實現的,語法爲:jQuery.validator.addMethod("name",function,message)。其中name爲驗證規則的名稱,function定義驗證的規則,message是驗證失敗時的提示信息。如:

Javascript代碼
jQuery.validator.addMethod("ip", function(value, element) {
return this.optional(element) || (/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/.test(value) && (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256));
}, "Please enter a valid ip address.");
// 增加只能是字母和數字的驗證
jQuery.validator.addMethod("chrnum", function(value, element) {
return this.optional(element) || (/^([a-zA-Z0-9]+)$/.test(value));
}, "Please enter a valid format(charactors, A-Z, a-z, 0-9 only).");
/**
* 自定義驗證規則——對電話號碼進行驗證
*/
$.validator.addMethod(
"isPhone",
function(value, element)
{
// “/\(?0\d{2,3}[) -]?\d{7,8}/”匹配電話號碼的格式多種:010-82839278、(010)82839278、01082839278等,但是,這樣有一個問題
// 如:(01082839278這樣的也會匹配。當然可以用分支條件"|"解決,比較麻煩。而且以什麼開始或結束也沒有匹配。
// 爲了簡單起見,去掉有"()"的形式。匹配區號3位,則本地號8位,區號4位,則本地號7位的號碼。
var tel = /^0\d{2}[-]?\d{8}$|^0\d{3}[-]?\d{7}$/;
return this.optional(element) || (tel.test(value));
}
, "電話號碼格式不對."
);

jQuery.validator.addMethod("ip", function(value, element) {
return this.optional(element) || (/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/.test(value) && (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256));
}, "Please enter a valid ip address.");
// 增加只能是字母和數字的驗證
jQuery.validator.addMethod("chrnum", function(value, element) {
return this.optional(element) || (/^([a-zA-Z0-9]+)$/.test(value));
}, "Please enter a valid format(charactors, A-Z, a-z, 0-9 only).");
/**
* 自定義驗證規則——對電話號碼進行驗證
*/
$.validator.addMethod(
"isPhone",
function(value, element)
{
// “/\(?0\d{2,3}[) -]?\d{7,8}/”匹配電話號碼的格式多種:010-82839278、(010)82839278、01082839278等,但是,這樣有一個問題
// 如:(01082839278這樣的也會匹配。當然可以用分支條件"|"解決,比較麻煩。而且以什麼開始或結束也沒有匹配。
// 爲了簡單起見,去掉有"()"的形式。匹配區號3位,則本地號8位,區號4位,則本地號7位的號碼。
var tel = /^0\d{2}[-]?\d{8}$|^0\d{3}[-]?\d{7}$/;
return this.optional(element) || (tel.test(value));
}
, "電話號碼格式不對."
);  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章