最近做了一個查詢小功能,input輸入框輸入文字后,自動列出幾條查詢結果,可以鍵盤上下鍵或鼠標進行查詢結果選擇,並且點擊輸入框其他地方要隱藏這個列出的結果。
但比較頭疼的是input上添加blur事件和查詢提示結果click事件發生沖突,點擊查詢結果時,會首先觸發input的blur事件,導致將查詢提示結果隱藏選擇不了,
解決辦法:
給blur失去焦點事件添加延遲事件,讓blur事件在click事件后執行。
$(
".query_tools"
).blur(
function
(event){
setTimeout(
function
() {
$(
".query_list"
).css(
"display"
,
"none"
);
}, 300);
});
另一個解決方案有bug,
2.添加mouseover,mouseout 。前者刪除blur事件,后者添加回來。鼠標在click執行之前先執行了mouseover事件,刪除blur就不會隱藏了,然后點擊完成后,mouseout再把blur添加回來,就行了。(mouseover ,mouseout不會轉移焦點)。
測試的是chrome瀏覽器。