Domanda

Ho un elemento di input con onchange = " do_something () " ;. Quando sto digitando e premo il tasto Invio, viene eseguito correttamente (do_something prima, invia quindi) su Firefox e Chromium (non testato in IE e Safari), tuttavia in Opera non funziona (si invia immediatamente). Ho provato a usare un ritardo come questo:

<form action="." method="POST" onsubmit="wait_using_a_big_loop()">
<input type="text" onchange="do_something()">
</form>

ma non ha funzionato neanche.

Hai qualche consiglio?

Modifica: Alla fine ho usato un mix delle soluzioni fornite da iftrue e crescentfresh, ho semplicemente sfocato il campo per lanciare il metodo do_something (), l'ho fatto perché alcuni altri campi di input avevano altri metodi onchange.

$('#myForm').submit( function(){
    $('#id_submit').focus();
} );

Grazie

È stato utile?

Soluzione

Puoi usare jquery e dirottare il modulo.

http://docs.jquery.com/Events/submit

<form id = "myForm">

</form>

   $('#myForm').submit( function(){
   do_something();
   } );

Questo dovrebbe inviare il modulo dopo aver chiamato quel metodo. Se hai bisogno di un controllo più accurato, lancia un ritorno falso alla fine dell'evento di invio ed effettua la tua richiesta di post con $ .post ();

Altri suggerimenti

Da http://cross-browser.com/forums/viewtopic. ? php id = 123 :

  

Per le specifiche, premendo Invio non lo è   dovrebbe sparare l'evento del cambiamento. Il   L'evento change si verifica quando un controllo   perde attenzione e il suo valore è cambiato.

     

In IE premendo Invio si mette a fuoco il   pulsante di invio - quindi l'inserimento del testo   perde attenzione e questo provoca un cambiamento   evento.

     

In FF premendo Invio non si mette a fuoco   il pulsante di invio, ma la modifica   l'evento si verifica ancora.

     

In Opera non si verifica nessuna delle precedenti.

keydown è più coerente tra i browser per rilevare le modifiche in un campo.

Non sono bravo in Javascript, ma potresti fare qualcosa del genere?

<form name="myform" action="." method="POST">
<input type="text" onchange="do_something();document.myform.submit();">
</form>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top