2011-05-29 13 views
20

¿Hay alguna manera de implementar un evento de cambio de texto para detectar el cambio de texto en un campo de texto de entrada html?
Es posible simular esto utilizando eventos clave (tecla presionada, etc.), sin embargo, no es realmente eficaz y difícil, ¿hay una mejor manera?entrada de texto html Evento de cambio

+4

Por favor ingrese más detalles. Qué NECESITA hacer, sin pensar en formas de hacerlo. Por ejemplo, si el campo recibe información de un escáner de código de barras, entonces MONITORARía el campo en lugar de utilizar keyup/press o onchange – mplungjan

+1

@mplugjan: tipos de usuario en un cuadro de texto para buscar una consulta, y el área de salida se actualiza constantemente – user775187

Respuesta

24

Cuando estoy haciendo algo como esto, uso el evento onKeyUp.

<script type="text/javascript"> 
function bar() { 
     //do stuff 
} 
<input type="text" name="foo" onKeyUp="return bar()" /> 

pero si usted no desea utilizar un evento de HTML que podría tratar de usar jQuerys método

$('.target').change(function() { 
    //do stuff 
}); 

.Cambiar() en este ejemplo la entrada tendría que tener una clase "objetivo "

si vamos a tener varios cuadros de texto que desea tener hacer lo mismo cuando se cambia el texto y que necesita sus datos a continuación, usted puede hacer esto:

$('.target').change(function(event) { 
    //do stuff with the "event" object as the object that called the method 
)}; 

de esta forma puede usar el mismo código, para múltiples cuadros de texto que usan la misma clase sin tener que reescribir ningún código.

+0

es Evento de cambio de jquery implementado usando eventos de keyup? – user775187

+0

@ user775187 no, creo que es el evento onChange que implementa porque también puede usar el evento de cambio para elementos como botones de opción, listas de selección, casillas de verificación, etc. – CaffeinatedCM

+0

-1: "pero si no quieres usar un evento html, podrías intentar usar el método jQuerys .change()". Hay muchas opciones entre usar el atributo de evento en tu html y usar jQuery. La sugerencia de que no existe es bastante engañosa. Además de eso, tampoco está muy claro por su respuesta que estas dos cosas en realidad se unen a eventos completamente diferentes. – Jasper

5

Bueno, a menos que entienda mal sólo puede utilizar el atributo onChange:

<input type="text" onChange="return bar()"> 

Nota: en FF 3 (al menos) esto no se llama hasta que algún usuario teh ha confirmado su cambiarse haciendo clic de distancia de la elemento, haciendo clic en entrar, u otro.

28

onChange no se dispara hasta que pierde el foco más tarde. Si quiere ser realmente estricto con los cambios instantáneos de todo tipo, use:

<input 
    type  = "text" 
    onchange = "myHandler();" 
    onkeypress = "this.onchange();" 
    onpaste = "this.onchange();" 
    oninput = "this.onchange();" 
/> 
Cuestiones relacionadas