关键字事件的preventDefault()无法正常工作

Sol*_*ili 12 javascript jquery google-chrome internet-explorer-8

我无法preventDefault()上班.

以下是我尝试过的一些不同的代码变体:

第一:

$(document).keyup(function (evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode == 192) {
        alert('192');
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

第二:

$(document).keyup(function (evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode == 192) {
        alert('192');
        evt.preventDefault();
    }
});
Run Code Online (Sandbox Code Playgroud)

第三:

$(document).keyup(function (evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode == 192) {
        alert('192');
        evt.preventDefault();
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

只有警报才有效.
一切工作在Opera,但无法在Chrome和IE也试过keydownkeypress.在keypress脚本上不起作用. $('#thetext').keydown(function(evt){});既不是这样的.
这是完整的代码:http://bbullett.tk/test/kakey.html

Key 192 = `
Run Code Online (Sandbox Code Playgroud)

我试图插入一些文字或符号而不是`

und*_*ned 37

聆听keyup事件为时已晚,无法打电话preventDefault,试着听keypress或者说keydown.

$('input[type=text], textarea').on('keydown', function(event){
    if (event.which == 192) {
        console.log('192');
        event.preventDefault();
    }
});
Run Code Online (Sandbox Code Playgroud)

请注意,jQuery规范化which属性,它是跨浏览器.

http://jsfiddle.net/763ys/


Stu*_*ows 6

没有默认行为.keyup(); 它会在按键触发默认行为后触发.请改用.keydown() or.keypress().

来源: http ://api.jquery.com/category/events/keyboard-events/