view-design / ViewUI

A high quality UI Toolkit built on Vue.js 2.0

Home Page:https://www.iviewui.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Bug Report]Form表单resetFields触发时如果input对应值为空字符串,且rule的trigger为change,则再次输入时首字符不会触发校验

qwer02224 opened this issue · comments

Environment

Win10/Chrome 111.0.5563.64/vue 2.6.14

Reproduction link

http://v4.iviewui.com/components/form

Steps to reproduce

表单中Input绑定规则 {pattern: /^[A-Za-z0-9_-]*$/, message: '只支持数字、字母、中划线和下划线', trigger: 'change'}
在Input为空时点击重置,触发resetFields方法
然后再Input中进行输入,输入单个字符 !

What is expected?

表单校验失败,给出 【只支持数字、字母、中划线和下划线】的错误提示

What is actually happening?

表单未触发校验,再次输入一个字符才会触发,例如输入正常字符 1

我今天也遇到这个问题了,首次输入change并未触发,非要等到输入第二个字符才会触发

不过有可以替换的方案,比如监听input的input事件,然后在监听事件中,去调用form的validateField方法,去手动校验

form-item组件在调用resetField()之后没有重新将validateDisabled改为false;所以导致这个缺陷

onFieldChange() {
      if (this.validateDisabled) {
          this.validateDisabled = false;
          return;
      }

      this.validate('change');
  }