2009-04-30 6 views
28

Come è possibile associare un evento OnChange di un controllo TextBox al funzionamento tramite jQuery?Come si collega l'evento onchange di un controllo TextBox utilizzando JQuery?

Am provare questo e il suo difetto:

$(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:. Voglio realizzare un TextBox tag come quello per lo StackOverflow che rileva eventi OnChange e chiama le funzioni AJAX quando un utente digita in

+1

Cosa fallisce esattamente? Il riempimento automatico non è chiamato o è qualcos'altro? – kgiannakakis

+0

Per una casella di testo con funzionalità di completamento automatico, è probabilmente un evento onkeyup migliore. – Eddy

+0

@ Eddy, perché è quello? Non sarebbe meglio inviare la richiesta AJAX di appena possibile? –

risposta

31

Siete alla ricerca di keydown/stampa/fino

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

o utilizzando bind $ ("# inputID"). legare ('onKeyDown', ...

012.

http://docs.jquery.com/Events

+1

Ho scoperto che l'uso di 'keydown' significava che il mio gestore avrebbe attivato alcune strane sequenze di tasti come ALT + TAB. –

+3

Key * funziona solo per i tasti premuti. Se si incolla qualcosa nella casella di testo usando il menu di scelta rapida del mouse non si attiverà. L'utilizzo di un evento onchange è di solito la strada da percorrere. –

+1

@ ingredient_15939 ecco perché la mia risposta menziona espressamente "Se stai cercando KEYdown/premi/su", non parlando degli eventi del mouse –

1

I 2a risposta di Chad Grant e inviare questo articolo del blog [link rimosso rimosso] per il vostro piacere di visualizzazione.

+0

Quel link (http://themaingate.net/dev/javascript/jquerys-annoying- edits-to-onchange-behavior) sembra essere morto. –

+0

ONOZ. Lo odio quando ciò accade. Rimuoverò il collegamento. :( – vitaminjeff

18

È necessario modificare il nome dell'evento da "cambiamento" a "onchange":

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

o utilizzare il cambiamento metodo di legante scorciatoia:

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

Nota che l'evento onchange solito spara quando il l'utente lascia l'input, quindi per il completamento automatico è meglio usare l'evento keydown.

7

Combinazione di keyup e change non è necessariamente sufficiente (completamento automatico del browser e incollare con il mouse cambia anche il contenuto di una casella di testo, ma non si attiva uno di questi eventi):

jquery change not working incase of dynamic value change

0

se si sta cercando di utilizzare jQuery aut plug ocomplete, allora penso che non c'è bisogno di legarsi a evento onChange, sarà

1

quello che dice Chad, tranne il suo meglio usare .keyup in questo caso perché con .keydown e .keypress il valore dell'ingresso è il valore più vecchio, ovvero il tasto più recente premuto, non viene riflesso se viene chiamato .val().

Questo probabilmente dovrebbe essere un commento sulla risposta di Chad ma non ho ancora il privilegio di commentare.

Problemi correlati