vue中一组件同时绑定了keyup.enter和blur事件,两个事件指向同一个函数,会触发两次的解决方案

Posted 狂奔的胖切肯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue中一组件同时绑定了keyup.enter和blur事件,两个事件指向同一个函数,会触发两次的解决方案相关的知识,希望对你有一定的参考价值。

【问题】在vue中 自定义组件上同时绑定了keyup和blur事件,用于完成input输入,但blur后触发一次事件,按下enter却触发两次;

【原因】按下enter也算是失焦了,所以会先执行keyup.enter,再执行blur,这样就造成了onInputComplete方法执行了两次;分清keyup和blur触发的先后顺序即可;

【解决】将keyup事件设置为触发blur,这样:如果blur了,执行onInputComplete;如果keyup了,执行blur,blur会执行onInputComplete。

 

 1     <component
 2       :is="editableComponent"
 3       v-if="editMode || showInput"
 4       ref="input"
 5       @focus="onFielddblClick"
 6       @keyup.enter.native="$event.target.blur"
 7       @blur="onInputComplete"
 8       v-on="listeners"
 9       v-bind="$attrs"
10       v-model="model"
11     >
12       <slot name="edit-component-slot"></slot>
13     </component>

 

以上是关于vue中一组件同时绑定了keyup.enter和blur事件,两个事件指向同一个函数,会触发两次的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

在vue项目当中绑定键盘事件

记一次vue中自定义组件native的坑

Vue element keyup.enter失效不起作用

vue 监听键盘回车事件 @keyup.enter || @keyup.enter.native

Vue之@click事件修饰符@click.stop与@click.prevent按键修饰符@keyup.enter

Vue之@click事件修饰符@click.stop与@click.prevent按键修饰符@keyup.enter