Почему элемент управления DropDownList ASP.NET Для развертывания элемента управления DropDownList в Internet Explorer требуется два щелчка мыши

#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");
                     }
                 });
}