【轉載】[jquery.validate]自定義方法實現"手機號碼或者固定電話"的邏輯驗證

最近項目開發中遇到這樣的需求「手機號碼或者固話至少填寫一個」,以下圖所示: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

相關文章
相關標籤/搜索