2010-09-09 9 views
5

So che è possibile collegare un gestore al modulo onsubmit ... Ma come aggiungere un gestore all'evento di reimpostazione del modulo? (di solito quando si fa clic su <input type="reset">)Come eseguire il codice JavaScript quando si ripristina un modulo?

Oppure ... Forse non esiste un evento del genere ... Quindi la domanda diventa su come aggirare il problema?

(in questo momento, voglio correre un gestore dopo caso di reset, ma un giorno potrei aver bisogno di correre prima caso di reset)

+0

umm ... "onreset'? :) –

+0

prova [questo] (http://stackoverflow.com/a/27949904/2835520) – IgniteCoders

+1

@MansApps: questo interromperà il pulsante di reset se JavaScript è disattivato. (Probabilmente, pochissime persone usano il pulsante di reset e pochissimi hanno JavaScript disattivato.) –

risposta

6

Secondo MDN, il tag <form> supporta un evento onreset .

Onreset si accende prima del ripristino effettivo del modulo; non sembra esserci alcun evento per dopo il reset. Ho provato a verificare se il reset avrebbe generato un evento onchange per gli input i cui valori sono stati reimpostati, ma non sembra.

Una soluzione per fare qualcosa dopo il ripristino potrebbe essere quella di impostare un flag on reset, e quindi utilizzare l'evento onblur del pulsante di reset (quindi dopo il ripristino, sarebbe eseguire la prossima volta che si fa clic su qualcos'altro). Una soluzione alternativa, ovviamente, è di attivare un setTimeout in modo che lo script venga eseguito poco dopo il ripristino. O uno è un po 'un trucco, temo.

+0

Accettare la tua risposta perché hai citato un buon riferimento. (anche se mi aspettavo un link al W3C o al Mozilla Developer Center) –

+0

Huh ... Avrei dovuto provare prima ... Usando 'onreset' eseguirò lo script PRIMA di resettare, e non dopo. –

+0

Hai ragione quando si verifica un evento. Modificato per rispondere. –

1

Hai provato

<form onreset="action()"> 

sembra funzionare per me per l'esecuzione dello script prima di ripristinare la forma. Per quanto riguarda ... Non penso che sia supportato, forse un setTimeout farebbe il trucco.

2

È possibile utilizzare il "reset" evento dell'elemento "forma"

<form action="form_action.php" onreset="return confirm('Do you really want to reset the form?');"> 

.... 

</form> 
2

trovato una risposta a questo che ha funzionato per me, così ho pensato di post-it per chiunque altro che è venuto in questo.

Invece di <input type='reset'>, è possibile utilizzare un elemento <button> con un gestore di clic che prima chiama il metodo form.reset(), allora si può aggiungere qualsiasi script è necessario che accada dopo l'azione di ripristino.

Problemi correlati