1. 程式人生 > >中文輸入法觸發input事件 js繫結事件:addEventListener和on的區別 select下拉框用empty()方法 清空option

中文輸入法觸發input事件 js繫結事件:addEventListener和on的區別 select下拉框用empty()方法 清空option

中文輸入法觸發input事件

compositionstart
當瀏覽器有非直接的文字輸入時, compositionstart事件觸發.

compositionend
當瀏覽器是直接的文字輸入時, compositionend事件觸發

解決方法:
在這裡插入圖片描述
這裡還有一個問題:
在有些瀏覽器如谷歌中,先響應input後響應compositionend,此時狀態inputLock為true導致input內部方法無法執行。
若要解決這個問題:
可以在compositionend中也加上input方法體,但是這樣太繁瑣。
另一種方法是給input內部方法設定了setTimeout,0.
在這裡插入圖片描述


這些方法均有可能導致在其他環境下input內部方法被執行兩次。

input事件中文觸發多次問題研究
https://www.cnblogs.com/mopagunda/p/8343031.html

js繫結事件:addEventListener和on的區別

為某元素設定事件觸發函式時,可能會覺得addEventListener和on事件的功能差不多,但是,addEventListener除了可以設定元素觸發順序外,還能多次繫結事件,因為 on 事件多次繫結的話會出現覆蓋。

舉例說明:
在這裡插入圖片描述結果會依次提示“message1”,“message2“。

但是js這麼寫的話:
在這裡插入圖片描述
這裡就只會提示最後一個“message2”,因為onclick作為物件div1的一個屬性,第二次對其進行賦值就會覆蓋之前的函式值,這樣on事件在某些場合就不適用了。