使用 VeeValidate 的 VueJS 表单验证,无法在某些移动设备上输入

VueJS Form validation with VeeValidate, can't type on some mobile devices

我们在使用 Vee-Validate 验证的表单中遇到了一个奇怪的问题 我们有一个输入:

 <input
            v-validate="'required|name'"
            id="firstName"
            v-model="firstName"
            :class="{'is-invalid': errors.has('firstName'), 'filled': firstNameFilled}"
            type="text"
            class="form-control"
            name="firstName">
          <label for="firstName">Vorname*</label>

以下脚本:

    computed: {
        ...mapGetters({
          formData: 'registration/formData'
        }),
     firstNameFilled () {
         return this.formData.firstName !== null
        },
      firstName: {
         get () {
            return this.formData.firstName
         },
      set (data) {
        this.$store.dispatch('registration/updateFormData', { firstName: 
          data })
        }
       },
     methods: {
       async validate () {
          this.registrationButtonDisabled = true
         try {
            const needCaptcha = this.$route.query.utm_campaign && 
           this.$route.query.utm_campaign.includes('display');
          this.$store.dispatch('registration/updateFormData', { needCaptcha: needCaptcha });

         const result = await this.$validator.validateAll()
         if (result) {
          this.next()
         }
        } catch (e) {
         console.log(e)
        }
        this.registrationButtonDisabled = false
       }

问题:

在某些移动版 Chrome(版本 7)上,当您开始在输入字段中键入内容时,该字段会立即重置并验证错误。注:

这显然很难调试,有人知道吗?

所以 Vee-Validate 中存在一个错误。在某些移动设备上,$watch-API 的处理方式不同,这意味着 v-model 不是实时更新的。 v-validate 无法处理这个。

解决方法是将 data-vv-validate-on="blur" 添加到输入中,让 vee 等待模型实际设置。

尽管开发人员在几个月前做出了承诺,但似乎还不清楚这是否会得到修复。

这是 link 对 GitHub 的讨论:https://github.com/baianat/vee-validate/issues/1281#issuecomment-399920810

问题似乎与某些设备上的 Chrome 有关,与使用的版本和 Safari 无关。 Firefox 看起来很稳定