#drop-down-menu #click #double
#выпадающее меню #щелкните #дважды
Вопрос:
У меня есть ASP.NET Элемент управления DropDownList, который отображается в виде выпадающего списка (выберите HTML-тег) на странице. По какой-то причине, когда я нахожусь в Internet Explorer, мне требуется два щелчка мыши, чтобы открыть его и посмотреть параметры, что является просто дополнительным щелчком мыши для конечного пользователя. Он отлично работает в Google Chrome, Mozilla Firefox и Safari — мне нужно щелкнуть только один раз, чтобы увидеть параметры для выбора. Почему это не будет корректно работать в IE? И что более важно, как я могу это исправить в IE?
Вот мой код:
<asp: идентификатор выпадающего списка=»DDLClientName» runat=»server» EnableViewState=»False» AutoPostBack=»True» class=»InputField» onfocus=»Изменить (это, событие)» onblur=»Изменить (это, событие)»>
Ответ №1:
Пришлось удалить жестко запрограммированное событие onfocus. IE обрабатывает первый щелчок для события фокусировки, а второй — для расширения выпадающего списка. Я думаю, это известная особенность IE наряду с другими 400 причудами.
Я все еще пытаюсь найти способ изменить стили выпадающего списка при фокусировке. В зависимости от того, какой код вы вводите в эту анонимную функцию обратного вызова, вам все равно может потребоваться дважды щелкнуть выпадающий список в IE. Я обнаружил, что вы можете работать с другими элементами управления внутри этой функции, и для этого не требуется двух щелчков мыши. Я пока оставлю это в качестве ответа. Я думаю, из-за Microsoft мы вообще не можем использовать onfocus в выпадающих списках. Я могу попробовать использовать фактический тег select, а не использовать Microsoft ASP.NET Выпадающий список и посмотреть, смогу ли я использовать событие onfocus тогда, без дополнительного щелчка. Я сомневаюсь в этом.
jQuery (это.Элементы.DDLClientName).фокус(функция() { .. поместите код здесь });
Комментарии:
1. Это продолжение причин, по которым IE sux.
2. пожалуйста, посмотрите и скажите, в чем проблема, я не поместил onfocus в выпадающий список screencast.com/t/o0aL2LSy8I
Ответ №2:
У меня была такая же проблема, и это связано с тем, как IE 10 обрабатывает onFocus, он обрабатывает первый фокус как щелчок. Что я сделал, чтобы исправить это, так это привязал событие наведения курсора мыши к событию щелчка. Затем вы можете запустить любой код, который вам нужен, в событии click.
// if IE 10
if (navigator.userAgent.indexOf("MSIE 10") > 0)
{
$("#InvoiceTypeDropDown").bind('mousedown',function(event) {
$(this).trigger('click')
});
}
Итак, мой полный код выглядел следующим образом:
if (navigator.userAgent.indexOf("MSIE 10") > 0)
{
$("#InvoiceTypeDropDown").bind('mousedown',function(event) {
$(this).trigger('click')
});
$("#InvoiceTypeDropDown").click(function () {
if ($(this).val() == '') {
$(this).css("color", "black");
$(this).css("font-style", "normal");
}
});
}