2009-03-20 29 views
12

Bất cứ ai cũng biết làm cách nào để vô hiệu hóa phím xóa lùi và xóa bằng Javascript trong IE? Đây là mã của tôi dưới đây, nhưng có vẻ như nó không hoạt động cho IE nhưng tốt cho Mozilla.Vô hiệu hóa phím xóa lùi và xóa bằng javascript trong IE

onkeydown="return isNumberKey(event,this)" 

function isNumberKey(evt, obj) 
{ 

    var charCode = (evt.which) ? evt.which : evt.keyCode 
    if (charCode == 8 || charCode == 46) return false; 

    return true; 
} 
+0

Tôi sẽ bắt đầu bằng cách đọc các sự kiện OnKeyUp/onKeyDown và các thành viên của Đối tượng sự kiện là gì. Điều này sẽ cung cấp cho bạn tất cả dữ liệu bạn cần. –

Trả lời

13

Trình xử lý sự kiện này hoạt động trong tất cả các trình duyệt chính.

function onkeyup(e) { 
    var code; 
    if (!e) var e = window.event; // some browsers don't pass e, so get it from the window 
    if (e.keyCode) code = e.keyCode; // some browsers use e.keyCode 
    else if (e.which) code = e.which; // others use e.which 

    if (code == 8 || code == 46) 
     return false; 
} 

Bạn có thể đính kèm sự kiện để chức năng này như:

<input onkeyup="return onkeyup()" /> 
+4

Typo. nếu (mã khóa cần phải nói nếu (mã số –

5

cập nhật dựa trên @JoeCoder s bình luận và 'outdatedness' của câu trả lời của tôi, tôi sửa đổi nó.

document.querySelector([text input element]).onkeydown = checkKey; 
function checkKey(e) { 
    e = e || event; 
    return !([8, 46].indexOf(e.which || e.keyCode || e.charCode) > -1); 
} 

cũng this jsFiddle

+0

hmm, tôi chắc chắn tôi đã sử dụng tệp đính kèm sự kiện đó trong tất cả các trình duyệt lớn (ví dụ: ff, safari, chrome, opera) – Joel

+0

Tôi đã thử mã này trong jsFiddle (http : //jsfiddle.net/x9tnxqLt/2/) và tôi không thể làm cho nó hoạt động trong IE11, Firefox 35 hoặc Chrome 40. Nó chặn sự kiện keyup và lấy mã, nhưng ngay cả khi sai được trả về trình duyệt vẫn xóa các ký tự khỏi đầu vào khi gõ lùi hoặc xóa, Mã của Joel Potter cũng không hoạt động. – Dwayne

+0

Thay vì câu trả lời cũ: jsfiddle @ http://jsfiddle.net/KooiInc/9r6bvaLd/ có thể hoạt động tốt hơn – KooiInc

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

Xem Mã này hủy bỏ hành động backspace.

window.onkeydown = function (event) { 

    if (event.which == 8) { 

     event.preventDefault(); // turn off browser transition to the previous page 

       // put here code you need 

     }; 

};  
Các vấn đề liên quan