iview 数据校验的坑

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

image.png

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

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

解决办法:

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

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

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

image.png
这个问题跟上个一样,可以自定义验证规则,来实现,我自己出现这个问题,是因为忘记写else了【一定记得要写else{callback();}】

修改后的验证规则:

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

你可能感兴趣的:(iview,select,校验)