1

В IE11 наблюдается странное поведение при запуске события keydown.jQuery keydown handler получает событие keydown, когда Ctrl находится в поле URL IE11

Пожалуйста, используйте следующий URL для воспроизведения: http://jsfiddle.net/marbug/79dz6ajz/

Существует форма с двумя полями ввода:

<form> 
    <input class="usernameField" type="text" ></input><br> 
    <input class="passwordField" type="password" ></input><br> 
</form> 

и есть следующие обработчики (Jquery 1.11.0):

$(document).ready(function() { 
    $('.usernameField').keydown(function(event) { 
     console.log('usernameField keydown'); 
    }); 
    $('.usernameField').keyup(function(event) { 
     console.log('usernameField keyup'); 
    }); 
    $('.passwordField').keydown(function(event) { 
     console.log('passwordField keydown'); 
    }); 
    $('.passwordField').keyup(function(event) { 
     console.log('passwordField keyup'); 
    }); 
}); 

1) Давайте воспроизведем вопрос с именем пользователя

  • Положите фокус на поле имени пользователя.
  • Затем щелкните по URL-адресу браузера.
  • Нажмите Ctrl на клавиатуре.
  • Обработчик keydown поля username получает событие. То есть см. «usernameField keydown» в консоли.

2) Теперь давайте сделаем то же самое с полем ввода пароля

  • Put фокус на поле ввода пароля.
  • Затем щелкните по URL-адресу браузера.
  • Нажмите Ctrl на клавиатуре.
  • Обработчик keydown поля пароля получает событие. То есть см. «Сбой пароля» в консоли.

Является ли это ошибкой IE11 или jQuery?

P.S. Событие Keyup (для клавиши Ctrl) не запускается во всех этих случаях. Это тоже странно.

+0

Я не понимаю вас вопрос. Вы привязали клавиатуру/ключ к вашим входам. Так почему вы удивляетесь, ничего не происходит, когда они не сосредоточены? И вообще, вы можете сократить свой код: http://jsfiddle.net/79dz6ajz/16/ – vaso123

+0

Хорошо. Я удалил 3). И спасибо за улучшение кода, но я бы предпочел оставить его как есть - текущая версия IMHO более понятна. – marbug

+0

Хорошо, но тогда в чем проблема? Это работает для меня в IE – vaso123

ответ

0

Хорошие идеи обычно приходят позже.

Это проблема IE11.

Проблема также может быть воспроизведена без JQuery:

<script> 
    function keyIsDownOnUsername(event) { 
     console.log('keyIsDown on username'); 
    } 
    function keyIsUpOnUsername(event) { 
     console.log('keyIsUp on username'); 
    } 
    function keyIsDownOnPassword(event) { 
     console.log('keyIsDown on password'); 
    } 
    function keyIsUpOnPassword(event) { 
     console.log('keyIsUp on password'); 
    } 
</script> 
<form> 
    <input onkeydown="keyIsDownOnUsername(event)" onkeyup="keyIsUpOnUsername(event)" type="text" ></input><br> 
    <input onkeydown="keyIsDownOnPassword(event)" onkeyup="keyIsUpOnPassword(event)" type="password" ></input><br> 
</form> 

http://jsfiddle.net/marbug/42hnaneo/

Вопрос был адресован к Microsoft:

https://social.technet.microsoft.com/Forums/en-US/6a065a6d-f378-4a32-8497-3f694bf82152/keydown-handler-receives-keydown-event-when-ctrl-is-pressed-in-url-field-of-ie11?forum=ieitprocurrentver

Смежные вопросы