我有以下代码应该在我每次点击 F9 或 F10 时执行,但它只在我每次点击时执行?
我有一个 onchange 事件附加到选择框,每次我点击 F9 或 F10 时都不会触发,每隔一次左右。我可以通过 ALERTS 来判断,只有在我敲击键时才会触发。
是什么赋予了?
document.addEventListener('keydown', function(e){
if( e.keyCode == '120' ){
alert("yo");
var curPosition = document.getElementById('unpostedOrders').options.selectedIndex;
document.getElementById('unpostedOrders').selectedIndex =(curPosition-1);
var invoice = document.getElementById('unpostedOrders').value;
getOrderToModify(invoice);
}
if( e.keyCode == '121' ){
alert("gibear");
var curPosition = document.getElementById('unpostedOrders').options.selectedIndex;
document.getElementById('unpostedOrders').selectedIndex =(curPosition+1);
var invoice = document.getElementById('unpostedOrders').value;
getOrderToModify(invoice);
}
}, false);
找到答案了,是补充:
document.addEventListener('keydown', function(e){
e.stopPropagation(); // **put this line in your code**
e.preventDefault(); // **put this line in your code**
if( e.keyCode == '120' ){
...
谢谢 Rakesh Chouhan!
最佳答案
试试这个
document.addEventListener('keydown', function(e){
e.stopPropagation(); // **put this line in your code**
if( e.keyCode == '120' ){
alert("yo");
var curPosition = document.getElementById('unpostedOrders').options.selectedIndex;
document.getElementById('unpostedOrders').selectedIndex =(curPosition-1);
var invoice = document.getElementById('unpostedOrders').value;
getOrderToModify(invoice);
}
if( e.keyCode == '121' ){
alert("gibear");
var curPosition = document.getElementById('unpostedOrders').options.selectedIndex;
document.getElementById('unpostedOrders').selectedIndex =(curPosition+1);
var invoice = document.getElementById('unpostedOrders').value;
getOrderToModify(invoice);
}
}, false);
它会每两次显示一次警报“gibear”,因为 F10 键也注册了浏览器事件,所以当你第一次按下 F10 时,它会显示警报,然后执行浏览器事件并设置浏览器事件操作的焦点(即在 firefox 中)它显示菜单)但是当您再次按 F10 时,它再次将焦点返回到浏览器文档。所以当你第二次按下它时,它会从菜单回到你的文档。
要在第一次按 F10 时检查此说明,请再次单击页面并再次按 F10
关于Javascript addeventListener keydown 每次单击都不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22929270/