近期再写CRM客户关系系统,有一个很特殊的业务需求,在非当前跟踪人编辑别人的有效期过期的信息时候,只能编辑客户经理的选项,但是手机号信息对于登录用户来说是脱敏的,脱敏后的手机号显示成:137********,很显然保存的时候手机号校验是过不去的,具体应该怎么做呢?
分析:
第一种方法:(不推荐)
一开始想着,手机校验的时候,手机号可以包含和0-9的数字,这样虽然可以保存下来信息,但是列表显示的时候,就真的是显示手机号137*******,注意此时不是脱敏信息,而是由于我们设置的手机校验后面的8位数字可以包含*,那么此时的手机校验的正则表达式应该写成:
$.extend($.fn.validatebox.defaults.rules, {
phoneNum: { //验证手机号
validator: function (value) {
//可编辑的手机号码输入框需要进行校验
return /^1(3|4|5|7|8)[0-9]{1}[\*0-9]{8}$/.test(value);
},
message: '格式不正确,请输入正确的11位手机号码.',
}
因此,我们看到扩展函数中的有个字段:phoneNum
这个字段其实不是瞎写的,对应JSP页面的input时输入框的中validType的值,
<input id="customerEditLinkmanPhone"
name="linkmanPhone"
required="true"
data-options="prompt:'联系人电话'" validType="phoneNum"
style="width:100%">
然后这种写法虽然可以教研通过但是并不是非常的推荐和合适!
第二种方法:(推荐)
so,需要校验的时候进行条件判断,那么由于只能修改客户经理,那么手机号显示脱敏,不能被编辑,所以,它的状态是制度状态,所以想要通过保存,不进行校验,也就是在手机号娇艳的时候添加条件进行制度状态的判断,如果是只读,那么久不进行校验,如果不是,那么就进行校验···
具体的JS中手机号校验代码判断如下:
$.extend($.fn.validatebox.defaults.rules, {
phoneNum: { //验证手机号
validator: function (value) {
//只读属性的手机号码,不校验
if(($('#customerEditLinkmanPhone').textbox('options').readonly)==true){
return true;
}else{
//可编辑的手机号码输入框需要进行校验
return /^1(3|4|5|7|8)\d{9}$/.test(value);
}
},
message: '格式不正确,请输入正确的11位手机号码.',
}
此种方法非常好用,感谢帮助过我的所有亲们,小生会继续加油哒!