![](/img/trans.png)
[英]JavaScript: “keydown” EventListener not working unless I click on the actual button first?
[英]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.