我遇到了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模型没有更新的原因是什么?