Это ответ, который я дал на другой, похожий вопрос.
Это прекрасно работает для меня в IE и Chrome, нет мерцания или чего-либо еще:
HTML
<select id="MySelect"><option>Hello</option></select>
JS
MySelect.onmousedown = function ()
{
window.setTimeout(function ()
{
//- An immediate blur, then refocus stops the options from being displayed
this.blur();
this.focus();
//- so now we run our custom function
runOtherFunctionInstead();
},0);
}
Убедитесь, что js запускается после синтаксического анализа элемента select, поместив его в onload или ondocumentready или блок скрипта после элемента select. Не пробовал это в Firefox или Opera. Предположительно, это сработает в Safari.
EDIT
Как предлагается в комментариях, всплывающее окно по-прежнему будет отображаться для двойного щелчка в IE (все версии). Это связано с ошибкой , когда событие mousedown не срабатывает при втором щелчке (упс). Вы можете быстро снова скрыть параметры, используя метод размытия, фокусировки в событии ondblclick
, и если этот метод работает в Firefox и Safari, я все же думаю, что это лучшее решение, учитывая, что большинство людей не щелкают дважды по полям выбора. *