欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

實(shí)例詳解jQuery表單驗(yàn)證插件validate

 更新時(shí)間:2016年01月18日 09:45:48   投稿:mrr  
validate插件是一個(gè)基于jquery的表單驗(yàn)證插件了里面有許多的常用的一些驗(yàn)證方法我們可以直接調(diào)用,具體的我們一起來看看

validate插件是一個(gè)基于jquery的表單驗(yàn)證插件了里面有許多的常用的一些驗(yàn)證方法我們可以直接調(diào)用,具體的我們一起來看看。

例子,html代碼

<!DOCTYPE html>
<html lang="en">
<head>
<include file="Common/Header" />
<meta charset="utf-8">
<script src="/jquery.min.js"></script>
</head>
<body>
<form class="form-horizontal" id="form" onsubmit="return false;">
<input type="text" name="password_old" class="form-control required" id="password_old" maxlength="20">
<input type="password" name="pay_password" class="form-control required" id="pay_password">
<input type="password" name="password_Repeat" class="form-control required" id="password_Repeat">
<button type="submit" id="submit" class="btn btn-success btn-padding-lr-30 margin-right-15">確定</button>
</form>
</body>
<!------------------------------------------------------------------------->
<script src="jquery.validate.min.js"></script>
<script src="messages_cn.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//提交
$('#submit').click(function(){
var pay_password = $('#pay_password').val();
var password_Repeat = $('#password_Repeat').val();
var password_old = $('#password_old').val(); 
var data = {
'pay_password':pay_password,
'password_Repeat':password_Repeat,
'password_old':password_old
};
console.info(data);
var v = $('#form').validate({
rules : {
pay_password : {
required : true,
minlength : 6,
ismypassword : true
},
password_Repeat : {
required : true,
minlength : 6,
ismypassword : true
},
password_old : {
required : true,
minlength : 6,
}
},
messages : {
pay_password : {
required : "請輸入密碼",
minlength : "字符長度不能小于6個(gè)字符",
ismypassword : "密碼必須由數(shù)字、英文字母和特殊字符(!,.@#$%^&*?_~)組成"
},
password_Repeat : {
required : "請輸入密碼",
minlength : "字符長度不能小于6個(gè)字符",
ismypassword : "密碼必須由數(shù)字、英文字母和特殊字符(!,.@#$%^&*?_~)組成"
},
password_old : {
required : "請輸入密碼",
minlength : "字符長度不能小于6個(gè)字符",
},
}
});
if(pay_password != password_Repeat){
alert("密碼不一致,請重新輸入確認(rèn)!");return false;
}
//---------------------------------
if(!v.form())return false;
$.ajax({
url:'{:U("Merchant/ajax_pw")}',
data: data,
beforeSend:function(){
},
success:function(res){ 
if(res == 1){
alert("密碼修改成功");
}
if(res == 0){
alert("兩次密碼一樣,未做修改");
} 
if(res != 0 && res != 1){
alert(res);
} 
}
});
//------------------------
});
})
</script>
</html>

messages_cn.js文件如下

jQuery.extend(jQuery.validator.messages, {
required: "必選字段",
remote: "請修正該字段",
email: "請輸入正確格式的電子郵件",
url: "請輸入合法的網(wǎng)址",
date: "請輸入合法的日期",
dateISO: "請輸入合法的日期 (ISO).",
number: "請輸入合法的數(shù)字",
digits: "只能輸入整數(shù)",
creditcard: "請輸入合法的信用卡號",
equalTo: "請?jiān)俅屋斎胂嗤闹?,
accept: "請輸入擁有合法后綴名的字符串",
maxlength: jQuery.validator.format("請輸入一個(gè) 長度最多是 {0} 的字符串"),
minlength: jQuery.validator.format("請輸入一個(gè) 長度最少是 {0} 的字符串"),
rangelength: jQuery.validator.format("請輸入 一個(gè)長度介于 {0} 和 {1} 之間的字符串"),
range: jQuery.validator.format("請輸入一個(gè)介于 {0} 和 {1} 之間的值"),
max: jQuery.validator.format("請輸入一個(gè)最大為{0} 的值"),
min: jQuery.validator.format("請輸入一個(gè)最小為{0} 的值")
});

關(guān)于validator插件詳解

主要分幾部分

jquery.validate 基本用法
jquery.validate API說明
jquery.validate 自定義
jquery.validate 常見類型的驗(yàn)證代碼

下載地址

jquery.validate插件的文檔地址

http://docs.jquery.com/Plugins/Validation

jquery.validate插件的主頁

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

jquery.validate插件主頁上提供的demo

http://jquery.bassistance.de/validate/demo/

驗(yàn)證規(guī)則

下面是默認(rèn)校驗(yàn)規(guī)則,也可以自定義規(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 必須輸入正確格式的日期
(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: 必須輸入合法的信用卡號
(10)equalTo:"#field" 輸入值必須和#field相同
(11)accept: 輸入擁有合法后綴名的字符串(上傳文件的后綴)
(12)maxlength:5 輸入長度最多是5的字符串(漢字算一個(gè)字符)
(13)minlength:10 輸入長度最小是10的字符串(漢字算一個(gè)字符)
(14)rangelength:[5,10] 輸入長度必須介于 5 和 10 之間的字符串")(漢字算一個(gè)字符)
(15)range:[5,10] 輸入值必須介于 5 和 10 之間
(16)max:5 輸入值不能大于5
(17)min:10 輸入值不能小于10

驗(yàn)證提示

下面是默認(rèn)的驗(yàn)證提示,官網(wǎng)有簡體中文版的驗(yàn)證提示下載,或者通過jQuery.extend(jQuery.validator.messages自定義錯(cuò)誤提示信息,可以將網(wǎng)站的驗(yàn)證提示文本統(tǒng)一到一個(gè)文件里。

required: "This field is required.",
remote: "Please fix this field.",
email: "Please enter a valid email address.",
url: "Please enter a valid URL.",
date: "Please enter a valid date.",
dateISO: "Please enter a valid date (ISO).",
number: "Please enter a valid number.",
digits: "Please enter only digits",
creditcard: "Please enter a valid credit card number.",
equalTo: "Please enter the same value again.",
accept: "Please enter a value with a valid extension.",
maxlength: $.validator.format("Please enter no more than {0} characters."),
minlength: $.validator.format("Please enter at least {0} characters."),
rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
range: $.validator.format("Please enter a value between {0} and {1}."),
max: $.validator.format("Please enter a value less than or equal to {0}."),
min: $.validator.format("Please enter a value greater than or equal to {0}.")

使用方式

1:

在控件中使用默認(rèn)驗(yàn)證規(guī)則,例子:

電子郵件(必填)

<input id="email" class="required email" value="email@" />

2:

可以在控件中自定義驗(yàn)證規(guī)則,例子:

自定義(必填,[3,5])

<input id="complex" value="hi" class="{required:true,minlength:3, maxlength:5,
messages:{required:'為什么不輸入一點(diǎn)文字呢',minlength:'輸入的太少了',maxlength:'輸入那么多干嘛'}}" />

3:

通過javascript自定義驗(yàn)證規(guī)則,下面的JS自定義了兩個(gè)規(guī)則,password和confirm_password

$().ready(function() {
$("#form2").validate({
rules: {
password: {
required: true,
minlength: 5
},
confirm_password: {
required: true,
minlength: 5,
equalTo: "#password"
}
},
messages: {
password: {
required: "沒有填寫密碼",
minlength: jQuery.format("密碼不能小于{0}個(gè)字符")
},
confirm_password: {
required: "沒有確認(rèn)密碼",
minlength: "確認(rèn)密碼不能小于{0}個(gè)字符",
equalTo: "兩次輸入密碼不一致嘛"
}
}
});
});

required除了設(shè)置為true/false之外,還可以使用表達(dá)式或者函數(shù),比如

$("#form2").validate({
rules: {
funcvalidate: {
required: function() {return $("#password").val()!=""; }
}
},
messages: {
funcvalidate: {
required: "有密碼的情況下必填"
}
}
});

Html

密碼<input id="password" name="password" type="password" />
確認(rèn)密碼<input id="confirm_password" name="confirm_password" type="password" />
條件驗(yàn)證<input id="funcvalidate" name="funcvalidate" value="" />

4:

使用meta自定義驗(yàn)證信息

首先用JS設(shè)置meta

$("#form3").validate({ meta: "validate" }); 

Html

email<input class="{validate:{required:true, email:true,
messages:{required:'輸入email地址', email:'你輸入的不是有效的郵件地址'}}}"/>

5:

使用meta可以將驗(yàn)證規(guī)則寫在自定義的標(biāo)簽內(nèi),比如validate

JS設(shè)置meta

$().ready(function() {
$.metadata.setType("attr", "validate");
$("#form1").validate();
});

Html

Email

<input id="email" name="email"
validate="{required:true, email:true, messages:{required:'輸入email地址', email:'你輸入的不是有效的郵件地址'}}" />

6:

自定義驗(yàn)證規(guī)則

對于復(fù)雜的驗(yàn)證,可以通過jQuery.validator.addMethod添加自定義的驗(yàn)證規(guī)則

官網(wǎng)提供的additional-methods.js里包含一些常用的驗(yàn)證方式,比如lettersonly,ziprange,nowhitespace等

例子

// 字符驗(yàn)證 
jQuery.validator.addMethod("userName", function(value, element) {
return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
}, "用戶名只能包括中文字、英文字母、數(shù)字和下劃線"); 
//然后就可以使用這個(gè)規(guī)則了
$("#form1").validate({
// 驗(yàn)證規(guī)則
rules: {
userName: {
required: true,
userName: true,
rangelength: [5,10]
}
},
/* 設(shè)置錯(cuò)誤信息 */
messages: {
userName: {
required: "請?zhí)顚懹脩裘?,
rangelength: "用戶名必須在5-10個(gè)字符之間"
} 
},
}); 

7:

radio、checkbox、select的驗(yàn)證方式類似

radio的驗(yàn)證

性別

<span>
男<input type="radio" id="gender_male" value="m" name="gender" class="{required:true}"/><br />
女<input type="radio" id="gender_female" value="f" name="gender" />
</span>

checkbox的驗(yàn)證

最少選擇兩項(xiàng)

<span>
選項(xiàng)1<input type="checkbox" id="check_1" value="1" name="checkGroup"
class="{required:true,minlength:2, messages:{required:'必須選擇',minlength:'至少選擇2項(xiàng)'}}" /><br />
選項(xiàng)2<input type="checkbox" id="check_2" value="2" name="checkGroup" /><br />
選項(xiàng)3<input type="checkbox" id="check_3" value="3" name="checkGroup" /><br />
</span>

select的驗(yàn)證

下拉框

<span>
<select id="selectbox" name="selectbox" class="{required:true}">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</span>

8:

Ajax驗(yàn)證

用remote可以進(jìn)行Ajax驗(yàn)證

remote: {
url: "url", //url地址
type: "post", //發(fā)送方式
dataType: "json", //數(shù)據(jù)格式 data: { //要傳遞的數(shù)據(jù)
username: function() {
return $("#username").val();
}}
}

Plugin methods

Name Type

validate( options ) Returns: Validator

驗(yàn)證所選的FORM

valid( ) Returns: Boolean

檢查是否驗(yàn)證通過

rules( ) Returns: Options

返回元素的驗(yàn)證規(guī)則

rules( "add", rules ) Returns: Options

增加驗(yàn)證規(guī)則

rules( "remove", rules ) Returns: Options

刪除驗(yàn)證規(guī)則

removeAttrs( attributes ) Returns: Options

刪除特殊屬性并且返回他們

Custom selectors
Name Type

:blank Returns: Array <Element >
沒有值的篩選器

:filled Returns: Array <Element >
有值的篩選器

:unchecked Returns: Array <Element >
沒選擇的元素的篩選器
Utilities

Name Type

jQuery.format( template, argument , argumentN... ) Returns: String
用參數(shù)代替模板中的 {n}。
Validator

validate方法返回一個(gè)Validator對象, 它有很多方法, 讓你能使用引發(fā)校驗(yàn)程序或者改變form的內(nèi)容.

下面只是列出常用的.

form( ) Returns: Boolean
驗(yàn)證form返回成功還是失敗

element( element ) Returns: Boolean
驗(yàn)證單個(gè)元素是成功還是失敗

resetForm( ) Returns: undefined
把前面驗(yàn)證的FORM恢復(fù)到驗(yàn)證前原來的狀態(tài)

showErrors( errors ) Returns: undefined
顯示特定的錯(cuò)誤信息
built-in Validation methods

Name Type

setDefaults( defaults ) Returns: undefined
改變默認(rèn)的設(shè)置

addMethod( name, method, message ) Returns: undefined
添加一個(gè)新的驗(yàn)證方法. 必須包括名字,一個(gè)JAVASCRIPT方法和一個(gè)默認(rèn)的信息

addClassRules( name, rules ) Returns: undefined
增加組合驗(yàn)證類型

addClassRules( rules ) Returns: undefined
增加組合驗(yàn)證類型
built-in Validation methods

Name Type

required( ) Returns: Boolean
必填驗(yàn)證元素

required( dependency-expression ) Returns: Boolean
必填元素依賴于表達(dá)式的結(jié)果.

required( dependency-callback ) Returns: Boolean
必填元素依賴于回調(diào)函數(shù)的結(jié)果.

remote( url ) Returns: Boolean
請求遠(yuǎn)程校驗(yàn)。url通常是一個(gè)遠(yuǎn)程調(diào)用方法

minlength( length ) Returns: Boolean
設(shè)置最小長度

maxlength( length ) Returns: Boolean
設(shè)置最大長度

rangelength( range ) Returns: Boolean
設(shè)置一個(gè)長度范圍[min,max]

min( value ) Returns: Boolean
設(shè)置最小值.

max( value ) Returns: Boolean
設(shè)置最大值.

range( range ) Returns: Boolean
設(shè)置值的范圍

email( ) Returns: Boolean
驗(yàn)證電子郵箱格式

url( ) Returns: Boolean
驗(yàn)證連接格式

date( ) Returns: Boolean
驗(yàn)證日期格式(類似30/30/2008的格式,不驗(yàn)證日期準(zhǔn)確性只驗(yàn)證格式)

dateISO( ) Returns: Boolean
研制ISO類型的日期格式

dateDE( ) Returns: Boolean
驗(yàn)證德式的日期格式(29.04.1994 or 1.1.2006)

number( ) Returns: Boolean
驗(yàn)證十進(jìn)制數(shù)字(包括小數(shù)的)

numberDE( ) Returns: Boolean
Makes the element require a decimal number with german format.

digits( ) Returns: Boolean
驗(yàn)證整數(shù)

creditcard( ) Returns: Boolean
驗(yàn)證信用卡號

accept( extension ) Returns: Boolean
驗(yàn)證相同后綴名的字符串

equalTo( other ) Returns: Boolean
驗(yàn)證兩個(gè)輸入框的內(nèi)容是否相同

自定義jquery-validate的驗(yàn)證行為

1: 自定義表單提交

設(shè)置submitHandler來自定義表單提交動(dòng)作

$(".selector").validate({
submitHandler: function(form) { alert("驗(yàn)證通過"); }
});

如果需要提交表單,可以調(diào)用
form.submit(); 或者$(form).ajaxSubmit();

2: 調(diào)試模式

將debug設(shè)置為true,表單不會(huì)提交,只進(jìn)行檢查,方便調(diào)試

$(".selector").validate({
debug: true
})

3: 設(shè)置validate的默認(rèn)值

使用setDefaults可以設(shè)置validate的默認(rèn)值,比如默認(rèn)所有表單驗(yàn)證都是在debug模式下進(jìn)行

$.validator.setDefaults({
debug: true
})

4: 某些元素不驗(yàn)證

設(shè)置ignore屬性可以忽略某些元素不驗(yàn)證

$(".selector").validate({
ignore: "ignore"
})

5: 驗(yàn)證時(shí)機(jī)

jquery.validate可以很方便的設(shè)置在什么時(shí)候觸發(fā)驗(yàn)證動(dòng)作

onsubmit: 提交時(shí)是否驗(yàn)證

$(".selector").validate({
onsubmit: false
})

onfocusout: 失去焦點(diǎn)時(shí)驗(yàn)證(checkboxes/radio除外)

$(".selector").validate({
onfocusout: false
})

onkeyup: 在keyup時(shí)驗(yàn)證

$(".selector").validate({
onkeyup: false
})

onclick: 在checkboxes、radio點(diǎn)擊時(shí)驗(yàn)證.

$(".selector").validate({
onclick: false
})

6: 重寫驗(yàn)證規(guī)則和驗(yàn)證提示信息

//重寫max的的驗(yàn)證提示信息
$.validator.messages.max = jQuery.format("Your totals musn't exceed {0}!");
//重寫equal方法
$.validator.methods.equal = function(value, element, param) {
return value == param;
};

7: focusInvalid 是否把焦點(diǎn)聚焦在最后一個(gè)動(dòng)作或者最近的一次出錯(cuò)上

$(".selector").validate({
focusInvalid: false
})

8: focusCleanup

如果該屬性設(shè)置為True, 那么控件獲得焦點(diǎn)時(shí),移除出錯(cuò)的class定義,隱藏錯(cuò)誤信息,避免和 focusInvalid.一起用。

$(".selector").validate({
focusCleanup: true
})

9: meta

設(shè)置meta來封裝驗(yàn)證規(guī)則

$(".selector").validate({
meta: "validate",
})
<script type="text/javascript"></script>

自定義錯(cuò)誤消息的顯示方式

默認(rèn)情況下,驗(yàn)證提示信息用label元素來顯示, 并且會(huì)添加css class, 通過css可以很方便設(shè)置出錯(cuò)控件以及錯(cuò)誤信息的顯示方式。

/* 輸入控件驗(yàn)證出錯(cuò)*/
form input.error { border:solid 1px red;}
/* 驗(yàn)證錯(cuò)誤提示信息*/
form label.error{width: 200px;margin-left: 10px; color: Red;}

如果想自定義顯示方式,可以修改jquery.validate的默認(rèn)顯示方式

默認(rèn)用label顯示錯(cuò)誤消息,可以通過errorElement屬性來修改
errorElement: 錯(cuò)誤消息的html標(biāo)簽

$(".selector").validate
errorElement: "em"
})

可以在出錯(cuò)信息外用其他的元素包裝一層。
wrapper: 錯(cuò)誤消息的外層封裝html標(biāo)簽

$(".selector").validate({
wrapper: "li"
})

驗(yàn)證出錯(cuò)的css class默認(rèn)是error,通過errorClass可以修改
errorClass: 驗(yàn)證出錯(cuò)時(shí)使用的css class

$(".selector").validate({
errorClass: "invalid"
})

還自定義驗(yàn)證成功時(shí)的動(dòng)作
success: 如果值是字符串,會(huì)當(dāng)做一個(gè)css類,如果是一個(gè)函數(shù),則執(zhí)行該函數(shù)

$(".selector").validate({
success: "valid"
})

或者

success: function(label) {
label.html(" ").addClass("checked");
}

還可以把錯(cuò)誤消息統(tǒng)一到一個(gè)容器顯示
errorLabelContainer: 將錯(cuò)誤消息統(tǒng)一到一個(gè)容器顯示

$("#myform").validate({
errorLabelContainer: "#messageBox"
})

默認(rèn)情況下,錯(cuò)誤消息是放在驗(yàn)證元素后面的,可以自定義錯(cuò)誤消息的顯示位置

$(".selector").validate({
errorPlacement: function(error, element) {
error.appendTo( element.parent("td").next("td") );
}
})

更進(jìn)一步可以定義一個(gè)組,把幾個(gè)地方的出錯(cuò)信息統(tǒng)一放在一個(gè)地方,用error Placement控制把出錯(cuò)信息放在哪里
groups:定義一個(gè)組

$(".selector").validate({
groups: {
username: "fname lname"
},
errorPlacement: function(error, element) {
if (element.attr("name") == "fname" || element.attr("name") == "lname" )
error.insertAfter("#lastname");
else
error.insertAfter(element);
}
})

高亮顯示

highlight: 高亮顯示,默認(rèn)是添加errorClass
unhighlight: 和highlight對應(yīng),反高亮顯示

$(".selector").validate({
highlight: function(element, errorClass) {
$(element).addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
},
unhighlight: function(element, errorClass) {
$(element).removeClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
}
});

或者可以完全自定義錯(cuò)誤顯示
showErrors: 得到錯(cuò)誤的顯示句柄

$(".selector").validate({
showErrors: function(errorMap, errorList) {
$("#summary").html("Your form contains " + this.numberOfInvalids()
+ " errors, see details below.");
this.defaultShowErrors();
}
})
<script type="text/javascript"></script>
// 手機(jī)號碼驗(yàn)證
jQuery.validator.addMethod("mobile", function(value, element) {
var length = value.length;
var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/
return this.optional(element) || (length == 11 && mobile.test(value));
}, "手機(jī)號碼格式錯(cuò)誤"); 
// 電話號碼驗(yàn)證 
jQuery.validator.addMethod("phone", function(value, element) {
var tel = /^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/;
return this.optional(element) || (tel.test(value));
}, "電話號碼格式錯(cuò)誤");
// 郵政編碼驗(yàn)證 
jQuery.validator.addMethod("zipCode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "郵政編碼格式錯(cuò)誤");
// QQ號碼驗(yàn)證 
jQuery.validator.addMethod("qq", function(value, element) {
var tel = /^[1-9]\d{4,9}$/;
return this.optional(element) || (tel.test(value));
}, "qq號碼格式錯(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));
}, "只能輸入中文");
// 下拉框驗(yàn)證
$.validator.addMethod("selectNone", function(value, element) {
return value == "請選擇";
}, "必須選擇一項(xiàng)");
// 字節(jié)長度驗(yàn)證
jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {
var length = value.length;
for (var i = 0; i < value.length; i++) {
if (value.charCodeAt(i) > 127) {
length++;
}
}
return this.optional(element) || (length >= param[0] && length <= param[1]);
}, $.validator.format("請確保輸入的值在{0}-{1}個(gè)字節(jié)之間(一個(gè)中文字算2個(gè)字節(jié))"));

相關(guān)文章

最新評論