2012-05-16 13 views
6

Sto utilizzando questi eventi per provare a valutare l'input del modulo, ma se il modulo è compilato automaticamente dal browser, questi eventi non vengono attivati. Come posso attivare l'evento anche sulla compilazione automatica?Jquery .keyup .keydown .keypress non rileva la compilazione automatica del browser

+0

L'ho cercato qualche tempo fa e non credo che tu possa, non c'è nessun evento per il riempimento automatico del browser. Sarebbe comunque interessato a qualsiasi risposta :) –

+0

Senza sapere esattamente cosa stai facendo, potresti aggiungere anche un gestore di eventi '.change()'? Onestamente, non sono nemmeno sicuro che l'evento si attivi anche con il riempimento automatico del browser. – jaredhoyt

+0

Proverei '.change()' come suggerito da Jared, ma se non funziona dovresti usare '.blur()'. – nnnnnn

risposta

2

Non c'è modo di rilevare un riempimento automatico del browser, sfortunatamente. Utilizzare invece setInterval, ad esempio, per eseguire una funzione ad una frequenza piuttosto elevata che controlla se il valore originale (o vuoto) corrisponde al valore di input e attiva la risposta in questo modo. Se non vuoi farlo, probabilmente sei SOL dato che il browser non attiverà nemmeno lo .change, e probabilmente nessun evento è compatibile con il cross-browser.

Si potrebbe anche eseguire gli eventi di convalida sull'invio di moduli, che dovrebbe essere altrettanto efficace.

+0

sì il problema con la tecnica di sottomissione è che sto cambiando il colore del bordo di input basato sulla convalida dei contenuti, quindi ho bisogno che l'evento si accenda ogni volta che viene cambiato –

0

È possibile simulare un po 'il comportamento desiderato legandosi agli eventi .click() e/o .dblclick().

Non è garantito, ma è possibile che si verifichi un ulteriore clic del mouse se decide di "approvare" il completamento automatico selezionandolo dalla casella.

2

So che è una domanda piuttosto vecchia, ma ho risolto lo stesso problema utilizzando e.preventDefault() dopo la funzione keyup.

In questo modo se si seleziona con inserisci il suggerimento dal riempimento automatico del browser lo noterà. Il problema rimane ancora quando si fa clic con il mouse sul suggerimento, ma funziona bene se si preme un tasto qualsiasi dopo averlo selezionato.

soluzione finale

ho trovato questo post su StackOverflow: https://stackoverflow.com/a/24746108/3481005

e utilizzando .On ("input") fa il trucco!

$("#email").on("input",function (e) { 
Problemi correlati