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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM