2012-06-29 18 views
2

我想禁用除了textboxes和textareas之外的任何元素的退格鍵(keycode 8)。如何禁用退格鍵<body> EXCEPT EXCEPT輸入和textareas,使用jQuery?

這裏是我的嘗試沒有成功:

$(":not(input, textarea)").keydown(function(event) { 
    if (event.keyCode == 8) { 
     event.preventDefault(); 
     return false; 
    } 
}); 

...

$("*:not(input, textarea)").keydown(function(event) { 
    if (event.keyCode == 8) { 
     event.preventDefault(); 
     return false; 
    } 
}); 

..

$("body").not("input,textarea").keydown(function(event) { 
    if (event.keyCode == 8) { 
     event.preventDefault(); 
     return false; 
    } 
}); 

這樣做是爲了避免不小心碰到了退格鍵,用戶鍵,而不是集中在任何文本框或文本區。

有什麼想法?

+0

爲什麼你會認爲這是一個問題那需要解決?退格鍵/刪除鍵位於鍵盤的上角,特意使其難以意外擊中。 – Blazemonger

+0

你想做什麼?我知道Chrome將backspace解釋爲「Back」,這讓我很煩惱。這可以通過BackspaceMeansBackspace瀏覽器擴展來繞開。 –

回答

4

您還希望禁用只讀的文本區域或文本框。

如果文本區域或文本框是隻讀的並且有焦點,那麼點擊退格鍵也會導致您離開頁面。這就是爲什麼你也應該檢查只讀。

我假設你試圖阻止返回功能。

編輯:

您也可以將偵聽器附加到身體。 EDIT2:你需要防止checbox動作太(這是輸入)

$(document).keydown(function (e) { 
       var element = e.target.nodeName.toLowerCase(); 
       if ((element != 'input' && element != 'textarea') || $(e.target).attr("readonly") || (e.target.getAttribute("type") ==="checkbox")) { 
        if (e.keyCode === 8) { 
         return false; 
        } 
       } 
}); 
+0

工程就像一個魅力。非常感謝您的快速回答! –

+0

BOSS回答!!!! – LOTUSMS

2

最簡單的解決方案(其中涵蓋了所有的特殊情況)是:

$(document).keydown(function(e) { 
    if (e.which == 8 && !$(':focus').length) { 
     e.preventDefault(); 
    } 
});