情景
使用input結(jié)合下拉選項(xiàng)自定義一個(gè)預(yù)選數(shù)據(jù)列表
- input取消焦點(diǎn)(blur)時(shí)需要關(guān)閉下拉選項(xiàng)框;
-
選擇下拉選項(xiàng)時(shí)需要關(guān)閉下拉選項(xiàng)框;
0.jpg
故障
點(diǎn)擊下拉選項(xiàng)時(shí),多數(shù)情況下,會(huì)先觸發(fā)input的blur事件,導(dǎo)致出現(xiàn)某些缺陷
解決方式
點(diǎn)擊事件改為mousedown 事件,并在事件中使用event.preventDefault() 就可以了
原因:
所有元素都有click事件,會(huì)產(chǎn)生冒泡。一個(gè)元素失去焦點(diǎn),blur事件優(yōu)先于click事件。只要input綁定了blur,離開時(shí)瀏覽器會(huì)默認(rèn)執(zhí)行。
改為mousedown 之后,當(dāng)你點(diǎn)擊元素的時(shí)候,mousedown 優(yōu)先于blur執(zhí)行,所以只要在 mousedown 事件中阻止默認(rèn)事件發(fā)生就可以了!
