取消HTML中的keydown

Jac*_*ack 14 html javascript keydown

如何取消keydown键盘上的特定键,例如(空格,输入和arrows)在HTML页面中.

Tim*_*own 15

如果你只对你提到的示例键感兴趣,那么keydown事件将会发生,除了较旧的Blink之前版本的Opera(至少包括12版本),你需要取消该keypress事件.在keydown事件中可靠地识别非可打印键比在keypress事件中更容易,因此以下使用变量在keydown处理程序中设置以告知keypress处理程序是否禁止默认行为.

var cancelKeypress = false;

document.onkeydown = function(evt) {
    evt = evt || window.event;
    cancelKeypress = /^(13|32|37|38|39|40)$/.test("" + evt.keyCode);
    if (cancelKeypress) {
        return false;
    }
};

/* For Opera */
document.onkeypress = function(evt) {
    if (cancelKeypress) {
        return false;
    }
};
Run Code Online (Sandbox Code Playgroud)

  • +1,我删除了我的回答,支持这个,我不知道Opera的问题:-) (5认同)

mar*_*cgg 5

捕获keydown事件并返回false.应该是这样的:

<script>
document.onkeydown = function(e){
  var n = (window.Event) ? e.which : e.keyCode;
  if(n==38 || n==40) return false;
}
</script>
Run Code Online (Sandbox Code Playgroud)

(见此处)

密钥代码在这里定义

编辑:更新我在IE中工作的答案