2009-04-30 12 views
28

¿Cómo puedo vincular un evento OnChange de un TextBox para que funcione con jQuery?¿Cómo puedo enlazar el evento de cambio de un TextBox usando JQuery?

Am probar este y su fracaso:

$(document).ready(function() { 
    $("input#tags").bind("change",autoFill); 
}); 

function autoFill() { 
    $("#tags").autocomplete("/taglookup/", { 
     width: 320, 
     max: 4, 
     highlight: false, 
     multiple: true, 
     multipleSeparator:",", 
     scroll: true, 
     scrollHeight: 300, 
     delay: 10 
    }); 
} 

NB:. Quiero implementar un cuadro de texto Etiqueta como el de stackoverflow que detecta eventos OnChange y llama a funciones AJAX cuando un usuario escribe en

+1

¿Qué falla exactamente? ¿No se llama el autocompletar o es algo más? – kgiannakakis

+0

Para un cuadro de texto con una función de autocompletar, es probable que sea mejor el evento de activación. – Eddy

+0

@Eddy, ¿por qué es eso? ¿No sería mejor enviar la solicitud AJAX de lo antes posible? –

Respuesta

31

usted está buscando keydown/prensa/hasta

$("#inputID").keydown(function(event) { 
    alert(event.keyCode); 
}); 

o usando bind $ ("# inputID"). vincular ('onKeyDown', ...

http://docs.jquery.com/Events

+1

Encontré que usar 'keydown' significaba que mi controlador activaba ciertas teclas raras como ALT + TAB. –

+3

La tecla * solo funciona para presionar teclas. Si pega algo en el cuadro de texto utilizando el menú contextual del mouse, no se disparará. El uso de un evento onchange suele ser el camino a seguir. –

+1

@ ingredient_15939 por lo que mi respuesta menciona específicamente "Si está buscando KEYdown/press/up", sin hablar de los eventos del mouse –

1

I 2nd Chad Grant responde y también presente este artículo del blog [removed dead link] para su placer visual.

+0

Ese enlace (http://themaingate.net/dev/javascript/jquerys-annoying- edits-to-onchange-behavior) parece estar muerto. –

+0

ONOZ. Odio cuando eso ocurre. Eliminaré el enlace. :( – vitaminjeff

18

Debe cambiar el nombre del evento de "cambio" a "onchange":

$(document).ready(function(){ 
     $("input#tags").bind("onchange", autoFill); 
      }); 

o utilizar el cambio de método de aglutinante de acceso directo:

$(document).ready(function(){ 
     $("input#tags").change(autoFill); 
      }); 

Tenga en cuenta que el evento onchange por lo general se activa cuando el el usuario deja la entrada, por lo que para completar automáticamente es mejor usar el evento de tecla.

7

Combinación de keyup y change no es necesariamente suficiente (autocompletar del navegador y pegar a través del ratón también cambia el contenido del un cuadro de texto, pero no se dispara cualquiera de estos eventos):

jquery change not working incase of dynamic value change

0

si usted está tratando de usar jQuery aut Complemento completo, entonces creo que no es necesario enlazar al evento onChange, será

1

Lo que Chad dice, excepto que es mejor usar .keyup en este caso porque con .keydown y .keypress el valor de la entrada es aún el valor anterior, es decir, la tecla más reciente presionada, no se reflejaría si se llama a .val().

Esto probablemente debería ser un comentario sobre la respuesta de Chad, pero aún no tengo los privilegios para comentar.

Cuestiones relacionadas