2012-03-28 15 views
53

¿Cómo hacer eso?¿Detecta el retroceso y el del evento de "entrada"?

me trataron:

var key = event.which || event.keyCode || event.charCode; 

if(key == 8) alert('backspace'); 

pero no funciona ...

Si hago lo mismo en el caso de pulsación de tecla funciona, pero no quiero usar pulsación de tecla porque saca el caracter mecanografiado en mi campo de entrada. Tengo que ser capaz de controlar que


mi código:

$('#content').bind('input', function(event){ 

    var text = $(this).val(), 
     key = event.which || event.keyCode || event.charCode; 

    if(key == 8){ 
     // here I want to ignore backspace and del 
    } 

    // here I'm doing my stuff 
    var new_text = 'bla bla'+text; 
    $(this).val(new_text); 
    }); 

ningún carácter se debe anexar en mi entrada, además de lo que estoy añadiendo con val() realidad la entrada de la el usuario debe ser completamente ignorado, solo la acción de presionar la tecla es importante para mí

+2

En realidad no tiene que hacer el OR'ing - event.which está bien, jQuery normaliza el objeto de evento para usted. Consulte http://api.jquery.com/category/events/event-object/ – Niko

+0

Se supone que debe poner el nombre del evento como el primer argumento de '.bind', no un selector. Debería ser '$ ('content'). Bind ('keypress', ...' – pmrotule

Respuesta

68

Use .onkeydown y cancele la eliminación con return false;. De esta manera:

var input = document.getElementById('myInput'); 

input.onkeydown = function() { 
    var key = event.keyCode || event.charCode; 

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

O con jQuery, ya que ha añadido una etiqueta jQuery a su pregunta:

jQuery(function($) { 
    var input = $('#myInput'); 
    input.on('keydown', function() { 
    var key = event.keyCode || event.charCode; 

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

+13

¿Qué pasa si quieres capturar la entrada desde un clic derecho> pegar? – ctb

+2

' 'keydown'' no funciona en Chrome Android, devuelve vacío al hacer clic en retroceso o del – Kosmetika

+1

En función tenemos que mantener el evento como parámetro, entonces solo funcionará como función (evento) ------------------- ------- var input = document.getElementById ('myInput'); input.onkeydown = function (event) { var clave = event.keyCode || event.charCode; if (ke y == 8 || clave == 46) return false; }; –

3

¿Ha intentado usar 'onkeydown'? Este es el evento que está buscando.

Funciona antes de que se inserte la entrada y le permite cancelar la entrada de caracteres.

+0

pero ¿cómo lo cancelo? Porque estoy usando val() en la entrada y todavía agrega el carácter mecanografiado – Alex

+2

¿Qué tal ' event.preventDefault() '? – Niko

+0

Puedes simplemente' return false; 'para cancelar cualquier evento al usar jQuery. – iMoses

9

con jQuery

El event.which La propiedad normaliza event.keyCode y event.charCode. Se recomienda mirar event.which para ingresar la clave del teclado.

http://api.jquery.com/event.which/

jQuery('#input').on('keydown', function(e) { 
    if(e.which == 8 || e.which == 46) return false; 
}); 
+1

He estado usando jQuery durante mucho tiempo, pero no he visto esto. Siempre es bueno aprender algo nuevo. +1! – Sablefoste

1
$('div[contenteditable]').keydown(function(e) { 
// trap the return key being pressed 
if (e.keyCode === 13 || e.keyCode === 8) 
{ 
    return false; 
} 
}); 
+1

Código clave 13 para "Introducir" –

+1

Código clave 8 para "BackSpace" –

0

event.key === "retroceso"

más reciente y mucho más limpia: el uso event.key. ¡No más códigos de números arbitrarios!

input.addEventListener('keydown', function(event) { 
    const key = event.key; // const {key} = event; ES6+ 
    if (key === "Backspace" || key === "Delete") { 
     return false; 
    } 
}); 

Mozilla Docs

Supported Browsers

0

keydown con event.key === "Backspace" or "Delete"

más reciente y mucho más limpia: event.key utilizar. ¡No más códigos de números arbitrarios!

input.addEventListener('keydown', function(event) { 
    const key = event.key; // const {key} = event; ES6+ 
    if (key === "Backspace" || key === "Delete") { 
     return false; 
    } 
}); 

Mozilla Docs

Supported Browsers

Cuestiones relacionadas