2009-03-20 14 views
12

¿Alguien sabe cómo puedo desactivar el retroceso y eliminar la clave con Javascript en IE? Este es mi código a continuación, pero parece que no funciona para IE, pero está bien para Mozilla.Deshabilitar el retroceso y eliminar la clave con javascript en 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

Comenzaría leyendo sobre los eventos OnKeyUp/onKeyDown y sobre los miembros del objeto Evento. Esto debería proporcionarle todos los datos que necesita. –

Respuesta

13

Este controlador de eventos funciona en los principales navegadores.

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

se puede conectar el evento para esta función como:

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

Typo. if (keycode necesita decir si (código –

5

actualización basado en comentario @JoeCoder s y la 'desactualización' de mi respuesta, lo revisé.

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

Ver también this jsFiddle

+0

hmm, estoy bastante seguro de que he usado ese archivo adjunto de evento en todos los grandes navegadores (es decir, ff, safari, cromo, opera). – Joel

+0

Probé este código en jsFiddle (http : //jsfiddle.net/x9tnxqLt/2/) y no puedo hacer que funcione en IE11, Firefox 35 o Chrome 40. Intercepta el evento keyup y obtiene el código, pero incluso cuando se devuelve falso, el navegador aún borra caracteres de la entrada cuando se presionan retroceso o borrar. El código de Joel Potter tampoco funciona. – Dwayne

+0

Más bien una vieja respuesta: el jsfiddle @ http://jsfiddle.net/KooiInc/9r6bvaLd/ puede funcionar mejor – 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

Este código cancela la acción de retroceso.

window.onkeydown = function (event) { 

    if (event.which == 8) { 

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

       // put here code you need 

     }; 

};  
Cuestiones relacionadas