【問題】在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>