2012-01-19 33 views
3

朋友我正在做一個計算器像項目,所以這是一個完整的網頁,顯示我的計算器。對於來自鍵盤的輸入,所有其他按鍵都起作用我也想使用退格鍵來做計算器中的[del]命令。但它總是去Backward訪問的網站。這裏是我的代碼:如何覆蓋文檔中的退格鍵功能,如在谷歌

$(document).keypress(function(e){ 
var e=window.event || e 
var keyunicode=e.charCode || e.keyCode 
if(keyunicode>=40 && keyunicode<=57 && keyunicode!=44) 
{ 
    //call a function [worked] 
} 
else if(keyunicode==61) 
{ 
// call another function worked. 
} 
else if(keyunicode==8) 
{ 
e.preventDefault(); 
delete_last(); 

return false; 
} 

}); 

請幫助。我試圖在鉻..

+2

瀏覽器鍵盤快捷鍵總是贏。在瀏覽器決定不使用密鑰後,密鑰纔會發送到該頁面。這是設計。否則,惡意網站可能會劫持各種用戶交互。 –

+1

那麼我怎麼能夠重寫F5刷新iframe而不是窗口? :p –

+0

如果已經在形式函數參數中聲明瞭變量,則不應該使用'var e'。如果你想覆蓋變量,只需省略'var'。此外,jQuery已經處理特定於瀏覽器的實現,並規範化事件對象。函數中的前兩行可以用'var keyunicode = e.which'代替。 –

回答

4

你應該使用​​聽衆去趕退格keypress用於字符鍵。​​對功能鍵很有用。

$(document).keydown(function (e) { 
    if (e.which === 8) { 
    //your custom action here 
    return false; 
    } 
}); 
1

對於某些鍵,Chrome只支持keypress事件,退格鍵不在這些鍵之間。詳情請參閱http://code.google.com/p/chromium/issues/detail?id=2606

對​​作出反應並致電preventDefault,以便在Chrome中看到效果。

+0

我明白了。谷歌鉻是壞的..如果有任何暗示鉻建議,請建議。 – progrrammer

+0

建議使用'keydown'而不是'keypress'。我不會說Chrome對它有害:關鍵事件尚未標準化,供應商選擇了不同的實施方式。 Chrome開發者希望與微軟的方式相匹配(請參閱鏈接錯誤的評論5和11)。現在在[事件規範草案](http://www.w3.org/TR/DOM-Level-3-Events/#events-keyboard-event-order)中也提出了這種方法。在我看來,Mozilla的方式更合乎邏輯,如果它更多地基於諸如down之類的詞的物理含義(不重複與草稿相矛盾),它會更好。 –