取消HTML中的keydown

时间:2010-06-14 09:43:29

标签: javascript html keydown

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

6 个答案:

答案 0 :(得分:14)

如果你只对你提到的示例键感兴趣,那么keydown事件就可以了,除了较旧的Blink之前版本的Opera(至少包括版本12)我需要取消keypress事件。在keydown事件中可靠地识别不可打印的键比keypress事件更容易,因此以下使用变量在keydown处理程序中设置以告诉{{1}处理程序是否抑制默认行为。

keypress

答案 1 :(得分:5)

抓住keydown事件并返回false。它应该是:

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

seen here

键码已定义为here

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

答案 2 :(得分:1)

我只为IE开发,因为我的作品需要它,所以有我的数字字段代码,不是美,但工作得很好

    $(document).ready(function () {

    $("input[class='numeric-field']").keydown(function (e) {

        if (e.shiftKey == 1) {
            return false
        }

        var code = e.which;
        var key;

        key = String.fromCharCode(code);

        //Keyboard numbers   
        if (code >= 48 && code <= 57) {
            return key;
        } //Keypad numbers
        else if (code >= 96 && code <= 105) {
            return key
        } //Negative sign
        else if (code == 189 || code == 109) {
            var inputID = this.id;
            var position = document.getElementById(inputID).selectionStart
            if (position == 0) {
                return key
            }
            else {
                e.preventDefault()
            }
        }// Decimal point
        else if (code == 110 || code == 190) {
            var inputID = this.id;
            var position = document.getElementById(inputID).selectionStart

            if (position == 0) {
                e.preventDefault()
            }
            else {
                return key;
            }
        }// 37 (Left Arrow), 39 (Right Arrow), 8 (Backspace) , 46 (Delete), 36 (Home), 35 (End)
        else if (code == 37 || code == 39 || code == 8 || code == 46 || code == 35 || code == 36) {
            return key
        }
        else {
            e.preventDefault()
        }
    });

});

答案 3 :(得分:0)

jQuery有一个很好的KeyPress function,允许你检测按键,然后它应该只是检测keyvalue并为你想忽略的那些执行if。

编辑: 例如:

$('#target').keypress(function(event) {
  if (event.keyCode == '13') {
     return false; // or event.preventDefault();
  }
});

答案 4 :(得分:0)

只是返回false。请注意,在Opera上这不起作用。您可能希望使用onkeyup并检查最后输入的字符并处理它。 或者更好地使用JQuery KeyPress

答案 5 :(得分:0)

这当然是非常古老的主题。 为了使用IE10和FireFox 29.0.1实现神奇,你必须在keypress(非keydown)事件监听器函数中执行此操作:

if (e.preventDefault) e.preventDefault();