У меня есть некоторые элементы управления, которые мне нужно отключить, когда у пользователей нет прайверов редактирования, но иногда они недостаточно широки, чтобы отобразить весь текст выбранного элемента option. В этом случае я добавил подсказку с ASP.NET и следующий код
ddl.Attributes.Add("onmouseover", "this.title=this.options[this.selectedIndex].title")
Это работает, когда элемент управления включен, но не работает, когда он отключен.
Следующее предупреждение не срабатывает, когда мышь находится над элементом select:
<select disabled="disabled" onmouseover="alert('hi');">
<option>Disabled</option>
</select>
Смотрите скрипт.
Q: могу ли я запустить событие onmouseover
для элементов управления disabled
?
Отключенные элементы не запускают события. Однако вы можете поместить DIV поверх элемента и прослушать событие, запущенное на этом элементе.
Обновить: см. комментарий nathan william для некоторых серьезных ограничений этого подхода. Я обновил скрипт, чтобы более четко иллюстрировать проблемные области.
Развернувшись на @Diodeus, вы можете использовать jQuery, чтобы автоматически создать контейнер div
для вас и обернуть его вокруг любого отключенные элементы.
:disabled
, чтобы найти все отключенные элементы..wrap()
с функцией обратного вызова функцииthis
для ссылки на текущий элемент в наборе..attr()
метод, чтобы получить значение onmouseover
от родительского элемента и применить одно и то же значение к новому div.$(':disabled').wrap(function() {
return '<div onmouseover="' + $(this).attr('onmouseover') + '" />';
});
Я знаю, что это старое сообщение, но в chrome вы можете установить cinter-указатели-события для всех, и это должно допускать события. Я не проверял в других браузерах.
button[disabled] {
pointer-events: all;
}
Изменить:
На самом деле, думаю, достаточно установить свойство auto. Как комментировал @KyleMit, поддерживайте его довольно хорошо.
Я просто использовал это в проекте, где мне нужно было отключить кнопку до тех пор, пока не будут соблюдены некоторые правила проверки, но мне также нужно было активировать проверку при наведении на кнопку. Таким образом, добавление указателей-событий сделало трюк. Я думаю, что это самый простой способ преодолеть проблему, изложенную в OP.
Почему вы не можете добавить заголовок в целевом элементе? название выглядит так же, как подсказка. И название работает на отключенных элементах.
когда вы устанавливаете значение своего выбора, также задайте заголовок:
element.value=value;
element.title = element.options[element.selectedIndex].text;