提交表单的时候不校验了,出现了线上bug,但是之前都是完好运行的。发现是表单校验函数validate()执行一直pending。
查了一下,参考这个回答https://codeantenna.com/a/KZ3iv63PiZ 说是自定义校验函数没有callback,我检查了代码,callback 之前写了一个 clearValidate(), 这个函数阻塞了callback()。 注释了就OK了。。
function validatePass(rule: any, value: string | number, callback: any): any {
// 只能输入数字且小数点后最多两位
const reg = /^\d+(?=\.{0,1}\d{0,2}$|$)/;
if (value) {
if (typeof value === 'string' && value.charAt(0) === '-') {
return callback(new Error('error!'));
}
if (!reg.test(value.toString())) {
return callback(new Error('required!'));
}
}
// adjustCauseRef.value?.clearValidate();
return callback();
}