2012-04-04 16 views
5

Tengo un controlador de eventos de jQuery que reacciona a cada cambio en un elementojQuery entrada de evento no se dispara si la entrada está vacía

<input id="myId" type="text" /> 

:

$("#myId").bind('input', function (e) {  
     // Do Stuff 
    }); 

Esto funciona perfectamente, excepto cuando la entrada en #myId está vacío (por ejemplo, solo había 1 carácter en el cuadro de entrada y lo elimino con Retroceso). Si la entrada se ha vuelto vacía, el evento no se dispara. Si luego ingreso un personaje, el evento se dispara.

¿Es esto un problema conocido? ¿Estoy haciendo algo mal? ¿Hay alguna manera de obtener un evento cuando la entrada se vacía?

actualización

El evento no se dispara en absoluto cuando se introduce Retroceso, al menos en IE9.

+1

Cuando es el evento supone que es despedido? ¿No puedes usar el evento 'keyup'? – elclanrs

+0

El evento oninput no parece ser muy utilizado, pero parece existir: https://developer.mozilla.org/en/DOM/window.oninput – j08691

+1

FYI, el evento 'input' no funciona en IE6,7 , 8. – jfriend00

Respuesta

8

hasta donde yo sé, "entrada" no es el evento que desea utilizar. Ya que "de entrada" es análogo al "cambio", que tiende a producir un mal resultado, cuando la cadena de caracteres se aproxima a 0, en lugar utilizar keyup

$("input#myId").bind('keyup', function (e) {  
    // Do Stuff 
}); 
+0

https://developer.mozilla.org/en/DOM/window.oninput – j08691

+0

ah, muy interesante. gracias – Kristian

+2

Podría estar equivocado aquí, pero no creo que pueda decir que la tecla es "el evento que desea usar" porque la entrada, a diferencia de la tecla, detecta CUALQUIER entrada, como en cortes y pegar con el mouse. Lo que tenemos aquí es simplemente que Firefox e IE están en desacuerdo sobre si un retroceso o eliminación debe contar como "entrada". Puedo ver ambos lados ... Supongo que Eric J. realmente quiere un evento de cambio que se dispare sin esperar hasta que el elemento pierda el foco como lo hace el evento de cambio regular. No sé cuál es la respuesta a esa pregunta. – ctb

Cuestiones relacionadas