jQuery$(document).keydown()问题
我目前正在开发一个需要标准桌面应用程序菜单栏的web应用程序。我已经开始在菜单栏上工作,并对布局进行排序 不幸的是,客户端希望访问键(如Alt+F)加载“文件”菜单。按下Alt键时,我想显示访问键。我目前有以下jQuery代码来处理此问题:jQuery$(document).keydown()问题,jquery,google-chrome,Jquery,Google Chrome,我目前正在开发一个需要标准桌面应用程序菜单栏的web应用程序。我已经开始在菜单栏上工作,并对布局进行排序 不幸的是,客户端希望访问键(如Alt+F)加载“文件”菜单。按下Alt键时,我想显示访问键。我目前有以下jQuery代码来处理此问题: $(document).ready(function() { $(this).keydown(function(e) { if(e.keyCode == 18) { alt_shifter = true; $('.access_key
$(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' }); }
});
});
不幸的是,正如您将在JSFIDLE上看到的,出于某些原因,在Google Chrome中,当按下Alt键时,这些键会带下划线,然后在keyup上正常化。但是,再次按下Alt键不会产生任何效果,直到下次按下Alt键。这几乎就好像一旦下划线完成并触发了keyup
,它就不会注册keyup,直到再次按下它
下面是JSFIDLE演示>
我们将非常感激您的任何帮助 我修改了代码以包含e.preventDefault()就在键码检查之前,它似乎起作用了。以下是帮助我找到答案的网站试试这个:
使用
e.preventDefault()代码>为我工作。这是您最新的小提琴:
通过添加e.preventDefault()
解决了这个可爱的问题。如果我不得不猜测的话,那是因为ALT键也被浏览器本身捕获,并显示其自己的高亮菜单
$(document).ready(function() {
$(this).keydown(function(e) {
e.preventDefault();
if(e.keyCode == 18) { alt_shifter = true; $('.access_key').css({ textDecoration: 'underline' }); }
});
$(this).keyup(function(e) {
e.preventDefault();
if(e.keyCode == 18) { alt_shifter = false; $('.access_key').css({ textDecoration: 'none' }); }
});
});
它对我有效-每次按下和释放ALT时下划线都会打开和关闭。MacOS 10.7上的Chrome 13.0.782.220。1@Alnitak-奇怪,在Windows 7下的同一版本的Chrome上,它对我不起作用。Windows上的13.0.782.220似乎有问题。是的,请尝试此处。问题存在。我同意。每隔按一次alt
键,不会触发keydown
事件。我试过的所有其他钥匙都能正常工作。