jQuery $(document).keydown()问题

Ben*_*enM 6 jquery google-chrome

我目前正在开发一个需要标准桌面应用程序菜单栏的Web应用程序.我已经开始在菜单栏上工作并对布局进行排序.

不幸的是,客户希望有访问键(例如Alt + F)加载"文件"菜单.按下Alt键时,我想显示访问键.我目前有以下jQuery代码来处理这个:

$(document).ready(function() {
    $(this).keydown(function(e) {
        if(e.keyCode == 18) { alt_shifter = true; $('.access_key').css({ textDecoration: 'underline' }); }
    });

    $(this).keyup(function(e) {
        if(e.keyCode == 18) { alt_shifter = false; $('.access_key').css({ textDecoration: 'none' }); }
    });
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,正如你在jsFiddle上看到的那样,出于某种原因,在谷歌浏览器中,当按下Alt键时,键被加下划线,然后在键盘上进行标准化.但是,再次按Alt不会执行任何操作,直到下次按下它为止.这几乎就像下划线已经完成keyup并被触发一样,它没有注册密钥,直到它被再次按下.

这是jsFiddle演示> http://jsfiddle.net/Ht2wD/

任何帮助都会非常感激!

Dav*_*e L 6

我修改了代码以包含e.preventDefault(); 就在keyCode检查之前它似乎工作.这是帮助我得到答案的网站http://unixpapa.com/js/key.html


Ric*_*nns 5

试试这个:http : //jsfiddle.net/Ht2wD/14/

e.preventDefault();我的工作。