Чтобы решить эту проблему самостоятельно и заметив поведение прослушивание, простой перехват mousedown
и установка атрибута будут иметь, поэтому сделали переопределение элемента select, и он работает хорошо.
Примечание. Этот код исправляет ошибочное поведение, заменяя элемент select в DOM. Это немного агрессивно и разрушит обработчики событий, которые вы могли бы привязать к элементу.
window.onmousedown = function (e) {
var el = e.target;
if (el.tagName.toLowerCase() == 'option' && el.parentNode.hasAttribute('multiple')) {
e.preventDefault();
// toggle selection
if (el.hasAttribute('selected')) el.removeAttribute('selected');
else el.setAttribute('selected', '');
// hack to correct buggy behavior
var select = el.parentNode.cloneNode(true);
el.parentNode.parentNode.replaceChild(select, el.parentNode);
}
}
From