最近项目开发中遇到这样的需求“手机号码或者固话至少填写一个”,如下图所示:
项目采用的jquery.validate.js验证组件,目前组件不支持这种“或”逻辑的验证,于是就自己定义一个
// 都没填
if (isEmpty(mobile) && isEmpty(telephone)) {
//<a href="/tag/zidingyi/" target="_blank" class="keywords">自定义</a><a href="/tag/cuowu/" target="_blank" class="keywords">错误</a><a href="/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="/tag/zidingyi/" target="_blank" class="keywords">自定义</a><a href="/tag/cuowu/" target="_blank" class="keywords">错误</a><a href="/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="/tag/zidingyi/" target="_blank" class="keywords">自定义</a><a href="/tag/cuowu/" target="_blank" class="keywords">错误</a><a href="/tag/tishi/" target="_blank" class="keywords">提示</a>
$("#receivingTelephone_tip").removeClass("successHint").addClass("errorHint").text("固定电话格式不对");
return false;
} else {
telephonePass = true;
}
}
if (mobilePass || telephonePass) {
//<a href="/tag/zidingyi/" target="_blank" class="keywords">自定义</a>成功<a href="/tag/tishi/" target="_blank" class="keywords">提示</a>
$("#receivingTelephone_tip").removeClass("errorHint").addClass("successHint").text('');
return true;
} else {
return false;
}
},"ignore");</pre>
补充isEmpty函数:
处理validate的errorPlacement:
在rules里面使用