場景是這樣的:
點擊輸入框失去焦點會觸發驗證方法,點擊提交按鈕的時候也會觸發驗證方法,如果用戶點擊輸入框后點擊提交按鈕就會同時觸發失去焦點方法和提交按鈕方法,這樣就會觸發兩次驗證。
我想寫成只觸發一次驗證,在開發過程中我發現:
在移動端當失去焦點和點擊事件同時發生的時候,會先執行失去焦點事件,然后再執行點擊事件,也就是說失去焦點事件的執行時間比點擊事件快。當我按這個邏輯寫好了之后在pc端也按這個邏輯去寫結果有問題,因為在PC端失去焦點和點擊事件同時發生的時候,只執行失去了焦點事件,點擊事件沒有執行,所以我在移動端的那些寫法放到PC端就行不通了。
豌豆資源搜索網站https://55wd.com 廣州vi設計公司http://www.maiqicn.com
解決辦法:
給按鈕設置 mousedown 事件,然后在 mousedown 事件中event.preventDefault()阻止默認事件發生 就可以了。
如果不組止默認事件的話mouseDown會先執行,然后再到失去焦點事件執行。