[英]Disable backward navigation when pressing backspace, allow backspace in fields
[英]Disable backspace navigation in browser
有誰知道如何禁用使用鍵盤上的“退格”鍵導航到上一頁的功能?
現在,我有一個發票類型的Web應用程序,如果用戶(在Mac上)按下退格鍵以刪除表單字段中的元素,則在到達輸入項的末尾后,如果他們再次按下退格鍵,它將移至先前瀏覽過的頁面,使他們丟失了所輸入應用程序的數據。
window.onkeydown = function(e) {
if (e.keyCode == 8 && e.target == document.body)
e.preventDefault();
}
說明:退格鍵的鍵碼為8。調用“ preventDefault”意味着該事件不會導致按下退格鍵的默認行為(即,向后導航頁面)。 僅當事件的目標是文檔的正文時,才會發生此行為。
編輯: jsfiddle示例
@Sam答案的缺點是,如果您單擊HTML元素(例如表格),則Backspace鍵仍會使您返回。 僅當您單擊沒有任何HTML元素的“空白”時,它才起作用。
我調整了Sam的答案,並從該答案中獲取了代碼以創建此解決方案。 它並沒有涵蓋所有的極端情況,但是對於我的用例來說已經足夠了。
function disableBackspaceNavigation() {
window.onkeydown = function(e) {
if (e.keyCode == 8 && !isTextBox(e.target)) e.preventDefault();
}
}
function isTextBox(element) {
var tagName = element.tagName.toLowerCase();
if (tagName !== "input") return false;
var typeAttr = element.getAttribute('type').toLowerCase();
return typeAttr === 'text';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.