元素失去焦点时,v模型是否不会更新?

时间:2019-12-09 17:08:40

标签: javascript vue.js vue-reactivity

我遇到了Vue问题,当元素失去焦点时,自定义输入上的v模型不会更新。

例如,如果我有两个自定义输入元素,并且在第一个中键入一个值,然后快速按Tab键进入第二个,则它将从第一个中截断一个或两个字符。

这是自定义表单元素的HTML和在keyup上调用的方法:

<input type="string" ref="input"
  v-on:keyup="checkInput"
  v-on:focus="hasFocus"
  v-on:focusout="lostFocus">

checkInput(event){
        console.log("Checking input for " + this.title);
        // If keycode is 9 (tab), ignore. Don't raise errors or emit values if user is just tabbing into field
        if(event.keyCode !== 9){
          var text = this.$refs.input.value;
          this.check = this.regex.test(text);
          this.$emit('input', text);
          this.$emit('check', this.check);
          console.log("Emit: " + text);
          this.hasFocus();
        }
      },

这是在模板中初始化的方式

<CustomFormElement:title="'Name'" :valid="'^(?!\\s*$).+'"
                  :errorMessage="'Name cannot be blank'"
                  v-model="data.name"
                  @check="(value) => formCheck('name', value)"
                  class="form_field"
      ></CustomFormElement>

当我进入checkInput并打印出正在发射的文本时,如果我快速键入并跳至下一个输入,它将把值截断几个字符。例如,如果我键入“ John Smith”,则data.name将等于“ John Smi”。

在元素失去焦点后,v-on:keyup是否停止触发是否有任何原因?元素失去焦点后,v模型没有更新的原因是什么?

0 个答案:

没有答案