【问题标题】:VueJS Form validation with VeeValidate, can't type on some mobile devices使用 VeeValidate 的 VueJS 表单验证,无法在某些移动设备上输入
【发布时间】:2019-05-01 11:02:35
【问题描述】:

我们在使用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 版)上,当您开始在输入字段中输入时,该字段会立即重置并验证错误。注意:

  • 这不会发生在所有版本 7 的 Chrome 上,具体取决于设备
  • 如果您将键盘连接到手机,它就可以工作
  • 只有在初始化后对该字段的第一次输入是通过触摸键盘完成时,它才会这样做。如果您使用普通键盘键入,请重置该字段,然后使用触摸键盘键入(如果有效)。
  • 如果您不键入而是使用触控键盘建议,它会正确验证但仍为空。在这种情况下设置了填充类。这让我们认为模型已设置、验证,然后出于某种奇怪的原因重新设置。

这显然很难调试,有人有想法吗?

【问题讨论】:

    标签: forms vue.js vee-validate


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 1970-01-01
      • 2020-04-10
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      相关资源
      最近更新 更多