业务场景:
因为公司做的事海外业务,所以验证手机号码,要根据区号来验证,所以用到vantUI的validator来验证
使用:
<div class="flex">
<label>公司電話</label>
<div>
<div class="select-flex">
<el-select
@change="getHouseNumber"
placeholder="請選擇"
class="select-phone"
v-model="datas.office_Coun_code"
>
<el-option
v-for="item in areaCode"
:key="item.areaCode"
:value="item.areaCode"
type="number"
:label="item.areaCode"
>
</el-option>
</el-select>
<van-field
type="number"
:rules="[
{
validator: validateHouseNumber,
message: houseNumberMessage,
},
]"
v-model="datas.office_tel"
class="field-phoneNumber"
/>
</div>
</div>
</div>
methods中的方法
validateHouseNumber(value, rule) {
if (value) {
// return true;
if (this.datas.selectHouseNumber === "+852") {
return /^\d{8}$/.test(value);
} else if (this.datas.selectHouseNumber === "+853") {
return /^\d{8}$/.test(value);
} else if (this.datas.selectHouseNumber === "+86") {
return /^\d{11}$/.test(value);
}
}
return true;
},
补充:动态文本我是写在@chang()方法里面
/**
* 家庭电话正则
*/
getHouseNumber() {
if (this.datas.office_Coun_code === "+852") {
this.houseNumberPattern = /^\d{8}$/;
this.houseNumberMessage = "Please enter 8 valid home phone numbers";
} else if (this.datas.office_Coun_code === "+853") {
this.houseNumberPattern = /^\d{8}$/;
this.houseNumberMessage = "Please enter 8 valid home phone numbers";
} else if (this.datas.office_Coun_code === "+86") {
this.houseNumberPattern = /^\d{11}$/;
this.houseNumberMessage = "Please enter 11 valid home phone numbers";
}
},