当在IE11的URL字段中按下Ctrl时,jQuery keydown处理程序接收keydown事件

时间:2014-12-18 11:13:39

标签: javascript jquery internet-explorer internet-explorer-11 keydown

在IE11中,触发keydown事件会有一种奇怪的行为。

请使用以下网址重现: 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)让我们用用户名字段

重现问题
  • 将焦点放在用户名字段上。
  • 然后点击浏览器的网址字段。
  • 按键盘上的Ctrl键。
  • 用户名字段的keydown处理程序接收事件。即请参阅控制台中的“usernameField keydown”。

2)现在让我们对密码字段

进行相同的操作
  • 将焦点放在密码字段上。
  • 然后点击浏览器的网址字段。
  • 按键盘上的Ctrl键。
  • 密码字段的keydown处理程序接收事件。即请参阅控制台中的“passwordField keydown”。

这是IE11或jQuery的错误吗?

P.S。在所有这些情况下都不会触发Keyup事件(对于Ctrl键)。这也很奇怪。

1 个答案:

答案 0 :(得分: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/

问题已发给微软:

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