zl程序教程

您现在的位置是:首页 >  前端

当前栏目

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

jQuery方法逻辑 实现 使用 一个 自定义 验证
2023-06-13 09:15:44 时间

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

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

jQuery.validator.addMethod("phone",function(value,element){
varmobile=$("#mobile").val();//手机号码
vartelephone=$("#telephone").val();//固定电话
varmobileRule=/^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0-9]|170)\d{8}$/;
vartelephoneRule=/^\d{3,4}-?\d{7,9}$/;

//都没填
if(isEmpty(mobile)&&isEmpty(telephone)){
//自定义错误提示
$("#receivingMobile_tip").addClass("errorHint").text("请填写固定电话或手机号码");
returnfalse;
}
varmobilePass=false;
vartelephonePass=false;
//手机填了、固定电话没填
if(!isEmpty(mobile)&&isEmpty(telephone)){
if(!mobileRule.test(mobile)){
//自定义错误提示
$("#receivingMobilePhone_tip").removeClass("successHint").addClass("errorHint").text("手机号码格式不对");
returnfalse;
}else{
mobilePass=true;
}
}

//手机没填、固定电话填了
if(isEmpty(mobile)&&!isEmpty(telephone)){
if(!telephoneRule.test(telephone)){
//自定义错误提示
$("#receivingTelephone_tip").removeClass("successHint").addClass("errorHint").text("固定电话格式不对");
returnfalse;
}else{
telephonePass=true;
}
}

if(mobilePass||telephonePass){
//自定义成功提示
$("#receivingTelephone_tip").removeClass("errorHint").addClass("successHint").text("");
returntrue;
}else{
returnfalse;
}
},"ignore");

补充isEmpty函数:

//空字符串判断
functionisEmpty(v,allowBlank){
returnv===null||v===undefined||(!allowBlank?v==="":false);
}

处理validate的errorPlacement:

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


在rules里面使用

rules:{
telephone:{
phone:[]
},
mobile:{
phone:[]
}
}