我有以下代码应该在我每次点击 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/

10-12 12:57