$(document).ready(function(){
/* 設置默認屬性 */
$.validator.setDefaults({
submitHandler: function(form) { form.submit(); }
});
// 中文字兩個字節
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] );
}, "請確保輸入的值在3-15個字節之間(一箇中文字算2個字節)");
/* 追加自定義驗證方法 */
// 身份證號碼驗證
jQuery.validator.addMethod("isIdCardNo", function(value, element) {
return this.optional(element) || isIdCardNo(value);
}, "請正確輸入您的身份證號碼");
// 字符驗證
jQuery.validator.addMethod("userName", function(value, element) {
return this.optional(element) || /^[/u0391-/uFFE5/w]+$/.test(value);
}, "用戶名只能包括中文字、英文字母、數字和下劃線");
// 手機號碼驗證
jQuery.validator.addMethod("isMobile", function(value, element) {
var length = value.length;
return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1}))+/d{8})$/.test(value));
}, "請正確填寫您的手機號碼");
// 電話號碼驗證
jQuery.validator.addMethod("isPhone", function(value, element) {
var tel = /^(/d{3,4}-?)?/d{7,9}$/g;
return this.optional(element) || (tel.test(value));
}, "請正確填寫您的電話號碼");
// 郵政編碼驗證
jQuery.validator.addMethod("isZipCode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "請正確填寫您的郵政編碼");
$(regFrom).validate({
/* 設置驗證規則 */
rules: {
userName: {
required: true,
userName: true,
byteRangeLength: [3,15]
},
password: {
required: true,
minLength: 5
},
repassword: {
required: true,
minLength: 5,
equalTo: "#password"
},
question: {
required: true
},
answer: {
required: true
},
realName: {
required: true
},
cardNumber: {
isIdCardNo: true
},
mobilePhone: {
isMobile: true
},
phone: {
isPhone: true
},
email: {
required: true,
email: true
},
zipCode: {
isZipCode:true
}
},
/* 設置錯誤信息 */
messages: {
userName: {
required: "請填寫用戶名",
byteRangeLength: "用戶名必須在3-15個字符之間(一箇中文字算2個字符)"
},
password: {
required: "請填寫密碼",
minlength: jQuery.format("輸入{0}.")
},
repassword: {
required: "請填寫確認密碼",
equalTo: "兩次密碼輸入不相同"
},
question: {
required: "請填寫您的密碼提示問題"
},
answer: {
required: "請填寫您的密碼提示答案"
},
realName: {
required: "請填寫您的真實姓名"
},
email: {
required: "請輸入一個Email地址",
email: "請輸入一個有效的Email地址"
}
},
/* 錯誤信息的顯示位置 */
errorPlacement: function(error, element) {
error.appendTo( element.parent() );
},
/* 驗證通過時的處理 */
success: function(label) {
// set as text for IE
label.html(" ").addClass("checked");
},
/* 獲得焦點時不驗證 */
focusInvalid: false,
onkeyup: false
});
// 輸入框獲得焦點時,樣式設置
$('input').focus(function(){
if($(this).is(":text") || $(this).is(":password"))
$(this).addClass('focus');
if ($(this).hasClass('have_tooltip')) {
$(this).parent().parent().removeClass('field_normal').addClass('field_focus');
}
});
// 輸入框失去焦點時,樣式設置
$('input').blur(function() {
$(this).removeClass('focus');
if ($(this).hasClass('have_tooltip')) {
$(this).parent().parent().removeClass('field_focus').addClass('field_normal');
}
});
});
- <form class="cmxform" id="signupForm " method="get" action="">
- <p>
- <label for="username">用戶名</label>
- <input id="username" name="username " />
- </p>
- <p>
- <label for="password">密碼</label>
- <input id="password" name="password " type="password" />
- </p>
- <p>
- <label for="confirm_password">確認密碼</label>
- <input id="confirm_password" name="confirm_password " type="password" />
- </p>
- <p>
- <label for="email">郵箱</label>
- <input id="email" name="email " />
- </p>
- <p>
- <label for="agree">是否同意</label>
- <input type="checkbox" id="agree" name="agree " />
- </p>
- <p>
- <input class="submit" type="submit" value="Submit"/>
- </p>
- </form>
javascript部分
- $().ready(function() {
- $("#signupForm ").validate({
- rules: {
- username: {
- required: true,
- minlength: 2
- },
- password: {
- required: true,
- minlength: 5
- },
- confirm_password: {
- required: true,
- minlength: 5,
- equalTo: "#password"
- },
- email: {
- required: true,
- email: true
- }
- },
- messages: {
- username: {
- required: "請輸入用戶名",
- minlength: "用戶名不能少於2個字符"
- },
- password: {
- required: "請輸入密碼",
- minlength: "密碼不能少於5個字符"
- },
- confirm_password: {
- required: "請輸入確認密碼",
- minlength: "確認密碼不能少於5個字符",
- equalTo: "密碼輸入不一致"
- },
- email: "請輸入有效郵箱"
- }
- });
- });