Tengo un <input type="text"> , y necesito llamar a una función después de que se cambió el texto en el cuadro de texto (incluidas las acciones realizadas durante los controladores de tecla y pulsación de tecla de jQuery).
Si llamo a mi función desde el controlador jQuery, veo el valor ( e.target.value ) tal como estaba antes de que se agregara la entrada. Como no quiero agregar manualmente la entrada al valor cada vez, ¿cómo puedo llamar a mi función y hacer que use el valor actualizado?
Si te entiendo bien, entonces algo como esto es la forma en que puedes hacerlo.
$('input').bind('change keydown keyup',function (){ /// do your thing here. // use $(this).val() instead e.target.value });Actualizado : 03/05/13
Tenga en cuenta : es mejor que use .on() en lugar de .bind()
A partir de jQuery 1.7, el método .on() es el método preferido para adjuntar controladores de eventos a un documento. Para versiones anteriores, el método .bind() se usa para adjuntar un controlador de eventos directamente a los elementos. Los controladores se adjuntan a los elementos seleccionados actualmente en el objeto jQuery, por lo que esos elementos deben existir en el punto en que se produce la llamada a .bind(). Para un enlace de eventos más flexible, consulte la discusión sobre la delegación de eventos en .on() o .delegate().
Para más información jQuery Bind
Puede usar keyup, por lo que solo lo llama una vez que se ha liberado la tecla:
$("#idofinputfield").keyup(function() { youFunction($(this).val()); });Puede generar el valor futuro tomando la posición donde se insertará el nuevo carácter:
$('input').bind('keypress',function (){ var value = e.target.value, idx = e.target.selectionStart, key = e.key; value = value.slice(0, idx) + key + value.slice(idx + Math.abs(0)); return yourfunction(value); });