無論是在前端開發還是后端開發,表單都是我們經常接觸的組件之一,而input作為表單組件的一種,也是最基礎和常用的表單類型。在Vue中,input也常常被使用到,同時vue input 的焦點事件也是我們經常需要使用到的。
在Vue中可以使用@focus和@blur兩個事件,來監聽input獲取和失去焦點的狀態,這兩個事件可以用v-on的簡寫方式@來代替,代碼如下:
其中handlerFocus和handlerBlur分別是input獲取和失去焦點時需要執行的回調函數。@focus和@blur在Vue中是內置的事件,當觸發這兩個事件時,將會隨著Vue實例的變化而更新DOM。
需要注意的是,如果要監聽的是動態渲染的input,需要使用v-if或v-show指令,例:
如果不加v-if或v-show指令,將會在DOM中渲染出來一個空的input框,不利于用戶體驗。
在Vue中,除了@focus和@blur外,還有一種比較靈活的方法來監聽input的焦點事件,即checkbox+vue-model雙向綁定的方式,例:
上面的代碼中,isInputFocus是一個布爾類型的變量,在checkbox選中的時候,isInputFocus為true,在input獲取焦點的時候,會根據v-if指令的條件渲染出input框,達到監聽焦點的目的。同時,vue-model雙向綁定也會在這個過程中發揮作用,當input框中的值變化時,也可以通過vue-model綁定到Vue實例中的data上。
總體來說,Vue input的焦點事件可以通過@focus和@blur來實現監聽,也可以通過checkbox+vue-model雙向綁定的方式來實現,需要注意的點是,如果是動態渲染的input框,需要使用v-if或v-show指令,避免在DOM中出現空框。