最近項目開發中遇到這樣的需求「手機號碼或者固話至少填寫一個」,以下圖所示:html
項目採用的jquery.validate.js驗證組件,目前組件不支持這種「或」邏輯的驗證,因而就本身定義一個jquery
jQuery.validator.addMethod("phone", function(value, element) { var mobile = $("#mobile").val();// 手機號碼 var telephone = $("#telephone").val();// 固定電話 var mobileRule = /^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0-9]|170)\d{8}$/; var telephoneRule = /^\d{3,4}-?\d{7,9}$/; // 都沒填 if (isEmpty(mobile) && isEmpty(telephone)) { //自定義錯誤提示 $("#receivingMobile_tip").addClass("errorHint").text("請填寫固定電話或手機號碼"); return false; } var mobilePass = false; var telephonePass = false; // 手機填了、固定電話沒填 if (!isEmpty(mobile) && isEmpty(telephone)) { if (!mobileRule.test(mobile)) { //自定義錯誤提示 $("#receivingMobilePhone_tip").removeClass("successHint").addClass("errorHint").text("手機號碼格式不對"); return false; } else { mobilePass = true; } } // 手機沒填、固定電話填了 if (isEmpty(mobile) && !isEmpty(telephone)) { if (!telephoneRule.test(telephone)) { //自定義錯誤提示 $("#receivingTelephone_tip").removeClass("successHint").addClass("errorHint").text("固定電話格式不對"); return false; } else { telephonePass = true; } } if (mobilePass || telephonePass) { //自定義成功提示 $("#receivingTelephone_tip").removeClass("errorHint").addClass("successHint").text(''); return true; } else { return false; } }, "ignore");
補充isEmpty函數:函數
// 空字符串判斷 function isEmpty(v, allowBlank) { return v === null || v === undefined || (!allowBlank ? v === "" : false); }
處理validate的errorPlacement:spa
errorPlacement : function(error, element) { //忽略自定義的方法錯誤提示 if (error.text() == "ignore") { return; }
}
在rules裏面使用 3d
rules : {
telephone : {
phone : []
},
mobile : {
phone : []
}
}
轉自:http://www.cnblogs.com/xiaoyangjia/p/3945007.htmlcode