用于捕获所有密钥的JQuery keypress vs keydown事件

时间:2016-02-27 18:48:33

标签: javascript jquery

我正在尝试捕获我的JQuery应用程序的所有关键事件。使用<a>事件时,我可以获取enter和tab事件,但所有字母都是大写的。所以,我尝试切换到keydown我听说是低+大写字母。这有效,除了它不再捕获enter和tab事件。这两个世界都是最好的吗?如何捕获所有事件,区分大小写,包括输入,制表符,移位,alt等键。

4 个答案:

答案 0 :(得分:0)

在按键事件中,使用event作为参数调用方法并添加此行

e.preventDefault()

这会暂停行动。

谢谢,

答案 1 :(得分:0)

这样做怎么样?

$(window).on('keydown keypress', function(e) {
  e.preventDefault();
  var code = e.keyCode || e.which;
  console.log(code);
});

理论上应该做的是防止其他事件被解雇,但因为我们同时调用keydown和keypress,其中一个肯定会被解雇。现在这会对您的其余代码产生负面影响,因此请谨慎使用。

答案 2 :(得分:0)

希望这有助于您尝试做什么

$(document.body).on('keypress', function(e) {
  var keycode = e.keyCode;

  var valid =
    (keycode > 47 && keycode < 58) || // number keys
    keycode == 32 || keycode == 13 || // spacebar & return key(s) (if you want to allow carriage returns)
    (keycode > 64 && keycode < 91) || // letter keys
    (keycode > 95 && keycode < 112) || // numpad keys
    (keycode > 185 && keycode < 193) || // ;=,-./` (in order)
    (keycode > 218 && keycode < 223); // [\]' (in order)
  if (valid) {
    console.log(keycode + ' keypress'); //printable char on keypress
  }

});

$(document.body).on('keyup', function(e) {
  var keycode = e.keyCode;
  var valid =
    (keycode > 47 && keycode < 58) || // number keys
    keycode == 32 || keycode == 13 || // spacebar & return key(s) (if you want to allow carriage returns)
    (keycode > 64 && keycode < 91) || // letter keys
    (keycode > 95 && keycode < 112) || // numpad keys
    (keycode > 185 && keycode < 193) || // ;=,-./` (in order)
    (keycode > 218 && keycode < 223); // [\]' (in order)
  if (!valid) {
    console.log(keycode + ' keyup'); //non printable char on keyup
  }
});

从此SO link

获得可见字符验证

答案 3 :(得分:-1)

 $(".num").keypress(function (e) {
    console.log('[keypress] key' + e.key + ' keyCode' + e.keyCode + ' which' + e.which);
    var kc = e.keyCode || e.which;
    if (kc < 48 || kc > 57)/* number keys*/ {
        //$.alertme('no');
        if (e.preventDefault) {
            e.preventDefault();
            console.log('[keypress] preventDefault');
        } else {
            e.returnValue = false;
            console.log('[keypress] returnValue');
        }
    }
    //$.alertme('ok');
    //var re = /[0-9]/.test(e.key);//not working android browser
    //if (!re) {
    //    if (e.preventDefault) {
    //        e.preventDefault();
    //    } else {
    //        e.returnValue = false;
    //    }
    //}
});

仅检查号码 将num class添加到输入文本