最近項目開發中遇到這樣的需求“手機號碼或者固話至少填寫一個”,如下圖所示:
項目采用的jquery.validate.js驗證組件,目前組件不支持這種“或”邏輯的驗證,于是就自己定義一個
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:
errorPlacement : function(error, element) {        //忽略自定義的方法錯誤提示        if (error.text() == "ignore") {          return;        }               }			
		在rules里面使用
rules : {        telephone : {          phone : []        },        mobile : {          phone : []        }      }		| 
 
 | 
新聞熱點
疑難解答
圖片精選