iview 数据校验的坑

1. select 设置了multiple 多选,只选择一个的时候,提示校验不经过的信息,可是提交是能经过,选择多个不会提示,按理选择1个或者N个都没问题啊。以下图:

image.png

验证规则:
{
 type: "array",
 required: true,
 message: "请选择服务领域!",
 trigger: "change"
 }
问题缘由:

选择的数据有延迟,没有拿到第一个数据,因此数组的长度为0,也就验证不经过了数组

解决办法:

自定义验证规则,里面经过setTimeout来实现等到拿到第一个数据时进行延迟验证ui

const selRule = (rule, value, callback) => {
     setTimeout(() => {
         if (value.length === 0) {
            callback(new Error("请选择服务领域."));
         } else {
            callback();
         }
     }, 0);
 };

2. 日期选择了后,文本框后面出现加载图标,以下图

image.png
这个问题跟上个同样,能够自定义验证规则,来实现,我本身出现这个问题,是由于忘记写else了【必定记得要写else{callback();}】this

修改后的验证规则:spa

const validateTime \= (rule, value, callback) \=> {
     if (value !== "") {
         if (value < this.formData.startTime) {
            callback(new Error("截止时间不能早于开始时间!"));
         } else {
            callback();
         }
     } else {
        callback(new Error("请选择截止日期."));
     }
 };
相关文章
相关标签/搜索