在keypress上,JQuery UI点击事件触发两次

Dan*_*lan 1 javascript jquery jquery-ui

HTML

<button id="clickMe" tabindex=0>Click Me!</button>
Run Code Online (Sandbox Code Playgroud)

JS

$('#clickMe').button();
$('#clickMe').click(function() {
    alert('hey');
});

$(document).keypress(function (e) {
    var key = e.keyCode ? e.keyCode : e.which;
    //detect when the user has hit enter
    if (key == 13) {
        //click the focused element
        $(document.activeElement).click();
    }
});
Run Code Online (Sandbox Code Playgroud)

当你点击tab按钮和enter按键事件时,为什么这会发出两次警报,但只有当你用鼠标点击按钮时才会触发一次?

示范

编辑: tab+ enter在IE 10中根本不起作用

Poi*_*nty 8

因为当焦点在按钮上时按"Enter"会触发"click"事件本地.您还会收到"按键"事件,然后再次触发"点击"事件.

  • 我想知道是否应该告诉他们关于e.preventDefault()和e.stopPropagation();-) (3认同)