2009-03-20 14 views
12

Czy ktoś wie, jak wyłączyć backspace i usunąć klucz z JavaScript w IE? Oto mój kod poniżej, ale wygląda na to, że to nie działa dla IE, ale dla Mozilli.Wyłącz backspace i usuń klucz z javascript w 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

Zacznę od czytania zdarzeń OnKeyUp/onKeyDown i od elementów obiektu Event. To powinno dostarczyć Ci wszystkich potrzebnych danych. –

Odpowiedz

13

Ten moduł obsługi zdarzeń działa we wszystkich najważniejszych przeglądarkach.

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; 
} 

Możesz dołączyć zdarzenie do tej funkcji, takich jak:

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

Typo. if (kod musi powiedzieć, jeśli (kod –

5

aktualizacji oparciu o @JoeCoder s komentarzem i 'outdatedness' mojej odpowiedzi, ja to poprawione.

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

Zobacz także this jsFiddle

+0

hmm, jestem prawie pewien, że użyłem tego załącznika zdarzenia we wszystkich dużych przeglądarkach (np. ff, safari, chrome, opera). – Joel

+0

Próbowałem tego kodu w jsFiddle (http : //jsfiddle.net/x9tnxqLt/2/) i nie mogę uruchomić go w IE11, Firefox 35 lub Chrome 40. Przechwytuje zdarzenie keyup i pobiera kod, ale nawet po zwróceniu wartości false przeglądarka nadal działa usuwa znaki z wejścia po naciśnięciu Backspace lub Delete Kod Joela Pottera też nie działa – Dwayne

+0

Zamiast starej odpowiedzi: jsfiddle @ http://jsfiddle.net/KooiInc/9r6bvaLd/ może działać lepiej – 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

Ten kod anuluje działanie Backspace.

window.onkeydown = function (event) { 

    if (event.which == 8) { 

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

       // put here code you need 

     }; 

};