除了输入和textarea之外,在jQuery中绑定箭头键

Ste*_*ler 0 javascript keyboard jquery key-bindings

我发现这个关于使用jQuery 绑定箭头键的优秀问题:JS/jQuery中的绑定箭头键Sygmoral的一个很好的解决方案:

$(document).keydown(function(e) {
    switch(e.which) {
        case 37: // left
        break;

        case 38: // up
        break;

        case 39: // right
        break;

        case 40: // down
        break;

        default: return; // exit this handler for other keys
    }
    e.preventDefault(); // prevent the default action (scroll / move caret)
});
Run Code Online (Sandbox Code Playgroud)

除了:这可以防止箭头键以焦点位于文本输入字段中时通常的方式工作.

当当前焦点位于输入,文本区域或其他内容可编辑区域时,如何修改此解决方案以允许箭头键正常工作?

Jai*_*Jai 6

把它放在一个条件:

$(document).keydown(function(e) {
    if(!$(e.target).is(':input, [contenteditable]')){
        switch(e.which){
           // the cases as is
        }
        e.preventDefault(); // prevent the default action (scroll / move caret)
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 是的我已经读过它并且它说:它总是引用事件处理程序附加到的元素而不是event.target,它标识事件发生的元素.这意味着在这种情况下,`currentTarget`永远是`文件`. (2认同)