Атрибут Title для отключенных элементов в Firefox
-
21-09-2019 - |
Вопрос
Я создаю очень динамичное веб-приложение, использующее много Javascript для обработки пользовательских событий.Я нахожусь в процессе того, чтобы сделать вещи немного более удобными для использования, и столкнулся с проблемой, с которой раньше никогда не сталкивался.
Я использую jQuery, так что учтите это в ваших ответах.Заранее благодарю.
У меня есть набор элементов button, определенных как:
<input type="button" title="My 'useful' text here." disabled="disabled" />
У меня есть эти кнопки со стилем по умолчанию:
div#option_buttons input {
cursor: help;
}
Затем, используя jQuery, я запускаю что-то вроде этого как событие щелчка в поле выбора:
window.current_column = '';
$('select.report_option_columns').live('click', function() {
var column = $(this).val();
if ( column == window.current_column ) {
// clear our our previous selections
window.current_column = '';
// make this option no longer selected
$(this).val('');
$('div#option_buttons input').attr('disabled','disabled');
$('div#option_buttons input').attr(
'title',
'You must select a column from this list.'
);
$('div#option_buttons input').css('cursor', 'help');
} else {
window.current_column = column;
$('div#option_buttons input').attr('disabled','');
$('div#option_buttons input').attr(
'title',
'Add this option for the column "' + column + '"'
);
$('div#option_buttons input').css('cursor', 'default');
}
});
Итак, как вы можете видеть, когда столбец выбран в поле выбора (здесь не показано), я хочу, чтобы кнопка была включена и вела себя как кнопка (с моими собственными событиями нажатия).Но когда столбец не выбран (включая загрузку по умолчанию), я хочу, чтобы кнопка была отключена.Разработчик юзабилити во мне хотел дать пользователям тонкие контекстуальные подсказки относительно того, что они могут сделать, чтобы включить кнопку с помощью встроенного рендеринга атрибута title в виде облегченной всплывающей подсказки.Я уже делаю это в других областях приложения (это безумный проект), и наши тесты юзабилити показали, что пользователи, по крайней мере, способны распознать, что когда курсор меняется на "справка", они могут навести курсор на элемент и получить некоторую информацию о том, что происходит.
Но это первый раз, когда я когда-либо пробовал это с элементом формы.По-видимому, когда я помещаю disabled="отключено" в элемент, он полностью игнорирует атрибут title и никогда не будет отображать всплывающую подсказку.
Теперь я знаю, что у меня есть несколько вариантов (по крайней мере, те, которые пришли мне в голову).:
- Напишу свой собственный пользовательский плагин tool tip, который будет немного более надежным.
- Не "отключайте" элемент, но оформите его как отключенный.Это был вариант, на который я опирался больше всего (с точки зрения простоты разработки), но я ненавижу делать это.
- Оставьте кнопку включенной, но не обрабатывайте событие нажатия.Мне не так нравится этот вариант, потому что мне нравится оставлять вещи в первоначальном стиле такими, какими они должны быть по логике вещей.Отключенная кнопка "ощущается" наиболее корректно, и внешний вид отключенной кнопки мгновенно распознается как отключенная кнопка.
Итак, учитывая все сказанное, я что-то упускаю?Есть ли что-то простое, что я могу сделать, о чем просто не подумал?Поиск в Google не дал мне результатов по этой теме, поэтому я подумал, что выложу это в StackOverflow, чтобы взглянуть на это по-новому.
**Редактировать**
Я только что нашел еще один вопрос StackOverflow по этой же теме, хотя этот человек использовал совсем другой набор терминов, описывающих его проблему (вероятно, поэтому я его не нашел).
URL-адрес к вопросу таков: Firefox не показывает всплывающие подсказки для отключенных полей ввода
Оба ответа на этот вопрос довольно хороши, хотя я хотел бы посмотреть, есть ли у кого-нибудь другие предложения.Может быть, что-то более специфичное для jQuery?Еще раз спасибо.
Решение
Существует несколько очень надежных плагинов для проверки.Вы можете найти их в разделе плагины jQuery.
Другой вариант для вас, который мне очень нравится и который, как правило, сейчас в тренде, - это использование плагина "Tipsy".Вы можете поместить маленькие значки "?" справа от ваших текстовых полей, и люди смогут навести на них курсор мыши, чтобы получить всплывающую подсказку "facebook-like".Этот плагин очень острый, и я настоятельно рекомендую его.
Удачи вам!
Другие советы
У меня была аналогичная проблема: я просто окружил отключенный элемент другим элементом и взаимодействовал с этим элементом div. Я использовал подсказку для отображения всплывающей подсказки для отключенного флажка.
<div style="cursor: pointer;" class="disabled" title="Do something to make it work" >
<input disabled="disabled" type="checkbox">
</div>
Я не проверял, решает ли это проблему с отсутствующим заголовком, но вы также можете отключить кнопки с помощью jquery на $(document).ready()
с уважением, harpax
Если это не нарушает ваш дизайн полностью, вы можете заменить кнопку на «span», «p»,...с тегом «Здесь мой «полезный» текст».
И меняйте местами кнопку только тогда, когда пользователь сделает правильный ход.