经过大量的修修补补,我也能看到,但不能为你解决这个问题。看起来Safari实现了不同的下拉列表,所以
blur
event实际上并不隐藏下拉菜单,但它确实模糊了字段,这似乎会导致在尝试重新打开下拉菜单时遇到困难。
当select元素被js和添加到focus事件的事件侦听器作为目标时,我还可以确认这种行为。
var myDropdown = document.getElementById('selectizer');
myDropdown.addEventListener('focus', function( event ) {
console.log("FOCUSSSED\nCount: " + count);
if (count < 1) {
setTimeout(function() {
event.target.blur();
console.log("BLURRRRR");
}, 200)
count++;
}
}, true);
我最好的建议是用html和css重新创建select。你可以用普通的CSS这样做:
.menu .option {
display: none;
}
.menu:focus .option {
display:block;
}
只要确保你给你的div等。
tabindex
显示和隐藏内容。
如果你喜欢,你也可以用JS来做,或者使用任意数量的现成的组件,你可以用快速谷歌找到。