簡體   English   中英

Javascript eventListener keydown無法正常工作我點擊

[英]Javascript eventListener keydown not working EVERY time I click

我有以下代碼,每當我點擊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 Key也注冊了瀏覽器事件,因此當您第一次按F10時它會顯示警報,然后執行瀏覽器事件並將焦點設置在瀏覽器事件操作上(即在Firefox中)它顯示菜單)但是當你再次按F10時它再次聚焦回瀏覽器文檔。 因此,當您按第二次時,它會從菜單向后聚焦到您的文檔。

要在第一次按F10時檢查此說明,請再次單擊該頁面,然后再次按F10

更改您從中設置新selectedIndex的行:

document.getElementById('unpostedOrders').selectedIndex =(curPosition-1);

對此:

document.getElementById('unpostedOrders').options.selectedIndex = (curPosition-1);

您無法訪問具有selectedIndex屬性的options屬性。

您還應檢查當前位置是否小於零或大於選項的長度

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM