async-validator
参考:
import Schema from "async-validator";
Page({
data: {
name: "", // 收货人
phone: "", // 手机号码
provinceName: "", // 省
provinceCode: "", // 省编码
cityName: "", // 市
cityCode: "", // 市编码
districtName: "", // 区
districtCode: "", // 市编码
subDistrictName: "", // 街道
subDistrictCode: "", // 街道编码
address: "", // 详细地址
fullAddress: "", // 完整地址
isDefault: false, // 是否设置为默认地址,0 不设置为默认地址,1 设置为默认地址
},
async saveAddrssForm() {
const { provinceName, cityName, districtName, address, isDefault } = this.data;
const params = {
...this.data,
fullAddress: provinceName + cityName + districtName + address,
isDefault: isDefault ? 1 : 0,
};
const { valid } = await this.validatorAddress(params);
// valid == false, 验证失败
if (!valid) return;
console.log(params);
},
validatorAddress(params) {
// 收货人:大小写字母、数字和中文字符
const nameRegExp = "^[a-zA-Z\\d\\u4e00-\\u9fa5]+$";
// 手机号:符合中国大陆手机号码的格式
const phoneReg = "^1(?:3\\d|4[4-9]|5[0-35-9]|6[67]|7[0-8]|8\\d|9\\d)\\d{8}$";
// 验证规则
const rules = {
name: [
{ required: true, message: "请输入收货人姓名" },
{ pattern: nameRegExp, message: "收货人姓名不合法" },
],
phone: [
{ required: true, message: "请输入收货人手机号" },
{ pattern: phoneReg, message: "收货人手机号不合法" },
],
provinceName: { required: true, message: "请选择收货人所在地区" },
address: { required: true, message: "请输入详细地址" },
};
// 验证实例
const validator = new Schema(rules);
return new Promise((resolve) => {
validator.validate(params, (errors) => {
if (errors) {
// 验证失败,提示第一个 error
wx.toast({ title: errors[0].message });
resolve({ valid: false });
} else {
resolve({ valid: true });
}
});
});
},
});