并排使用.keypress和.keydown

时间:2013-06-17 14:15:18

标签: javascript jquery

我需要使用大写和小写字母捕获普通文本,但我还想获取alt,ctrl,esc等的密钥代码。我试图运行两个jquery函数.keypress和.keydown,并且只接受来自.keydown的特殊键,但是当它们在一起时,它们只会给出一个结果。我正在使用Chrome,但我还需要支持尽可能多的其他浏览器。

2 个答案:

答案 0 :(得分:1)

您可以使用jQuery.Event来获取特殊键的状态,这是来自侦听器的回调的第一个参数:

http://jsbin.com/epuqig/2/embed?live

jQuery(function($) {
    $('input').on('keydown', function(event) {
        // event.shiftKey
        // event.ctrlKey
        // Also to fetch the keyCode use:
        // event.which
        if ( event.which == 8 && event.shiftKey ) {
            // Backspace and shift key is pressed
        }
    }); 
});

如果你不关心旧的浏览器,你可以去香草:

window.addEventListener('load', function() {
    var inputs = document.querySelectorAll('input');
    [].forEach.call(inputs, function(input) {
        input.addEventListener('keydown', keydownHandler, false);
    });
}, false);

function keydownHandler(event) {
    if ( event.keyCode == 8 && event.shiftKey ) {
        // Backspace and shift key is pressed!
    }
}

正如您所看到的,这几乎是相同的代码片段,但第二个需要在< IE9

答案 1 :(得分:0)

$(document).ready(function () {
    $(document).keydown(function (e) {
        var code = e.keyCode;
        if(e.altKey) // you can also use - e.ctrlKey , e.shiftKey
          // alt key
    }).keyup(function (e) {
        var code = e.keyCode;
    });
});