2013-08-30 53 views

回答

29

這應該可以做到。它指出,當頁面/文檔上的空格鍵被按下時,它不僅會阻止其默認行爲,而且還會恢復到原始狀態。

返回false似乎包括preventDefault。 Source

檢查JQuery的有關的keydown事件的詳細信息的API - http://api.jquery.com/keydown/

window.onkeydown = function(e) { 
    return !(e.keyCode == 32); 
}; 

JQuery的例子

$(document).keydown(function(e) { 
    if (e.which == 32) { 
     return false; 
    } 
}); 

編輯

正如@琥珀德黑陳述「上面的代碼會阻止按下HTML輸入的空格鍵「。爲了解決這個問題,你需要在空間欄被屏蔽的地方使用e.target。這可以防止空格鍵阻止HTML輸入等其他元素。

在這種情況下,我們指定空間條與主體目標。這將防止輸入被阻止。

window.onkeydown = function(e) { 
    if (e.keyCode == 32 && e.target == document.body) { 
    e.preventDefault(); 
    } 
}; 

注意:如果您使用的JQuery使用e.which代替e.keyCodeSource

The event.which property normalizes event.keyCode and event.charCode

JQuery的充當用於各種事件的歸一化。如果這讓讀者感到驚訝。我建議閱讀他們的Event Object文檔。

+1

此代碼可以阻止HTML輸入上的按下空格鍵。您必須檢查(e.target === document.body)這裏完整正確的答案:http://stackoverflow.com/a/22559917/3120495 – Ujeenator

0

你試過在javascript中捕獲keydown事件嗎?如果你使用jQuery,您可以在此處詳細瞭解捕獲關鍵事件: http://api.jquery.com/keydown/

如果你不是,你可以捕捉並忽略空格按鍵如下所述: https://stackoverflow.com/a/2343597/1019092

+0

@Alberto - 一定要閱讀答案的部分說*「這是大多數瀏覽器的預期行爲,我使用它所有的時間,當它不能在一個頁面中工作時,我非常惱火。「* –

6

檢測,如果是空格鍵被按下。如果是,則阻止其默認行爲。

document.documentElement.addEventListener('keydown', function (e) { 
    if ((e.keycode || e.which) == 32) { 
     e.preventDefault(); 
    } 
}, false); 
相關問題