IE7 событие изменения не вызывается - PullRequest
1 голос
/ 05 октября 2011

Я что-то не так делаю? Почему событие click не регистрируется при первом нажатии клавиши?

http://jsfiddle.net/vol7ron/VJ5CX/

В примере

  1. Нажмите «Меню», чтобы убедиться, что оно имеет фокус
  2. Используйте клавиши со стрелками (вверх / вниз), чтобы выделить параметр
  3. Используйте пробел, чтобы выбрать опцию

Обратите внимание, что событие change () не вызывается. Снова используйте пробел, чтобы выбрать ту же опцию, и обратите внимание, что она работает как надо.


Я пробовал:

  • с использованием размытия / фокуса в соответствии с этим вопросом , но не повезло
  • установка отмеченного атрибута на false, чтобы убедиться, что событие изменения вызвано

Интересные выводы:

  • Нет проблем при использовании мыши (она запускает событие изменения в первый раз, как и ожидалось)
  • Проблема по-прежнему возникает для нажатия клавиш, даже после выбора с помощью мыши (запустить, щелкнуть параметр, навести курсор на параметр и использовать клавиатуру).

Ожидаемые результаты:

  • Использование навигации по клавиатуре (стрелки вверх / вниз) и выбор с помощью пробела должны вызывать журнал «нажатия клавиш» и «щелчка». Это не работает при первоначальном нажатии клавиш, но работает каждый последующий раз. (проверьте Firefox для рабочего примера)

Ответы [ 2 ]

1 голос
/ 05 октября 2011

Я использовал размытие / фокус на начальной загрузке. Очевидно, мне нужно было размытие / фокус внутри события нажатия клавиш:

if (e.keyCode == 13 || e.keyCode == 32) {
   var cb = container.find('label.x-hover input:checkbox');

   cb.blur();             // <-- added
   cb.focus();            // <-- added
   cb.click();  
   updateLog('keydown');
   oTitle.focus();      
   return false;
}
0 голосов
/ 05 октября 2011

Попробуйте сделать это. Это случилось и со мной. Но я попробовал это, это помогло. Я не уверен, сработает ли это или нет.

container
.find('input[type="checkbox"]')
.change(function(){
   var cb     = $(this);
   var sClass = "checked";

   if (cb.prop(sClass)) { 
       cb.parent('label').addClass(sClass); 
   } else { 
       cb.parent('label').removeClass(sClass); 
   }
   updateLog('click');        
   oTitle.focus();
})

;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...