微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证

最近项目开发中遇到这样的需求“手机号码或者固话至少填写一个”,如下图所示:

项目采用的jquery.validate.js验证组件,目前组件不支持这种“或”逻辑的验证,于是就自己定义一个

rush: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)) {
    //<a href="https://www.jb51.cc/tag/zidingyi/" target="_blank" class="keywords">自定义</a><a href="https://www.jb51.cc/tag/cuowu/" target="_blank" class="keywords">错误</a><a href="https://www.jb51.cc/tag/tishi/" target="_blank" class="keywords">提示</a>
    $("#receivingMobile_tip").addClass("errorHint").text("请填写固定电话或手机号码");
    return false;
  }
  var mobilePass = false;
  var telephonePass = false;
  // 手机填了、固定电话没填
  if (!isEmpty(mobile) && isEmpty(telephone)) {
    if (!mobileRule.test(mobile)) {
      //<a href="https://www.jb51.cc/tag/zidingyi/" target="_blank" class="keywords">自定义</a><a href="https://www.jb51.cc/tag/cuowu/" target="_blank" class="keywords">错误</a><a href="https://www.jb51.cc/tag/tishi/" target="_blank" class="keywords">提示</a>
      $("#receivingMobilePhone_tip").removeClass("successHint").addClass("errorHint").text("手机号码格式不对");
      return false;
    } else {
      mobilePass = true;
    }
  }

  // 手机没填、固定电话填了
  if (isEmpty(mobile) && !isEmpty(telephone)) {
    if (!telephoneRule.test(telephone)) {
      //<a href="https://www.jb51.cc/tag/zidingyi/" target="_blank" class="keywords">自定义</a><a href="https://www.jb51.cc/tag/cuowu/" target="_blank" class="keywords">错误</a><a href="https://www.jb51.cc/tag/tishi/" target="_blank" class="keywords">提示</a>
      $("#receivingTelephone_tip").removeClass("successHint").addClass("errorHint").text("固定电话格式不对");
      return false;
    } else {
      telephonePass = true;
    }
  }

  if (mobilePass || telephonePass) {
    //<a href="https://www.jb51.cc/tag/zidingyi/" target="_blank" class="keywords">自定义</a>成功<a href="https://www.jb51.cc/tag/tishi/" target="_blank" class="keywords">提示</a>
    $("#receivingTelephone_tip").removeClass("errorHint").addClass("successHint").text('');
    return true;
  } else {
    return false;
  }
},"ig<a href="https://www.jb51.cc/tag/nor/" target="_blank" class="keywords">nor</a>e");</pre>

补充isEmpty函数

rush:js;"> // 空字符串判断 function isEmpty(v,allowBlank) { return v === null || v === undefined || (!allowBlank ? v === "" : false); }

处理validate的errorPlacement:

rush:js;"> errorPlacement : function(error,element) { //忽略自定义方法错误提示 if (error.text() == "ignore") { return; }           }

在rules里面使用

rush:js;"> rules : { telephone : { phone : [] },mobile : { phone : [] } }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐