empCode: [ { required: true, message: '统一信用代码不能为空' }, { pattern: /^[A-Z0-9]{18}$/, message: '请输入正确的统一信用代码' } ], 改用 Promise 写
时间: 2024-02-14 09:16:26 浏览: 24
好的,您可以将验证规则中的正则表达式改为 Promise 形式,如下所示:
```javascript
empCode: [
{
required: true,
message: '统一信用代码不能为空',
},
{
validator: (rule, value) => {
return new Promise((resolve, reject) => {
if (/^[A-Z0-9]{18}$/.test(value)) {
resolve();
} else {
reject(new Error('请输入正确的统一信用代码'));
}
});
},
},
],
```
这里使用了 Promise 对象封装验证逻辑,`resolve()` 表示验证通过,`reject()` 表示验证失败并返回错误信息。这样,您就可以像之前一样使用 `async/await` 或者 `.then()` 处理验证结果。
相关问题
validateRules: { certno: [ { required: true, message: '证件号码不能为空' }, { validator: (rule, value) => { return new Promise((resolve, reject) => { const result = verify(value); if (result.status === 0) { resolve(); } else { reject(new Error(result.msg)); } }); }, message: '请输入正确的身份证号码' } ], name: [ { required: true, message: '姓名不可为空' } ], empName: [ { required: true, message: '单位名称不可为空' } ], empCode: [ { required: true, message: '统一信用代码不能为空' }, { validator: (rule, value) => { return new Promise((resolve, reject) => { if (/^[A-Z0-9]{18}$/.test(value)) { resolve(); } else { reject(new Error('请输入正确的统一信用代码')); } }); } } ], reason: [ { required: true, message: '失信原因不能为空' } ] } 优化下这段代码
这段代码可以进行以下优化:
1. 使用正则表达式验证证件号码,不需要自己写验证函数。
2. 将验证函数提取为公共函数,避免重复代码。
3. 将验证规则抽离到单独的变量中,方便维护和修改。
4. 将多个验证规则合并为一条,减少代码量。
下面是优化后的代码:
```
const rules = {
certno: [
{ required: true, message: '证件号码不能为空' },
{ pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, message: '请输入正确的身份证号码' }
],
name: [
{ required: true, message: '姓名不可为空' }
],
empName: [
{ required: true, message: '单位名称不可为空' }
],
empCode: [
{ required: true, message: '统一信用代码不能为空' },
{ pattern: /^[A-Z0-9]{18}$/, message: '请输入正确的统一信用代码' }
],
reason: [
{ required: true, message: '失信原因不能为空' }
]
};
const validateRules = {};
for (let key in rules) {
validateRules[key] = rules[key].map(rule => {
if (rule.validator) {
return {
validator: (rule, value) => {
return new Promise((resolve, reject) => {
const result = rule.validator(value);
if (result.status === 0) {
resolve();
} else {
reject(new Error(result.msg));
}
});
},
message: rule.message
};
} else {
return rule;
}
});
}
```
mgState:[ {required: true, message: "请输入状态", trigger: "blur"}, {type: "number", message: "状态值必须为数字0和1", trigger: "blur"}, { pattern: /^(0|1)$/, message: "范围:0-1", trigger: "blur", } ],我想实现只能让用户输入0或1数字,请修改代码
你可以将 pattern 的正则表达式改为 /^(0|1)$/,这样就只能输入数字0或1了。修改后的代码如下:
```javascript
mgState: [
{ required: true, message: '请输入状态', trigger: 'blur' },
{ type: 'number', message: '状态值必须为数字0和1', trigger: 'blur' },
{
pattern: /^(0|1)$/,
message: '只能输入数字0或1',
trigger: 'blur',
},
],
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![ini-development](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)