2010-09-09 12 views
5

Sé que podemos adjuntar un controlador al formulario onsubmit ... Pero, ¿cómo podemos agregar un controlador al evento de restablecimiento de formulario? (generalmente al hacer clic en <input type="reset">)¿Cómo ejecutar código JavaScript cuando se restablece un formulario?

O ... Tal vez no hay tal evento ... ¿Entonces la pregunta es cómo solucionarlo?

(en este momento, quiero correr un controlador después caso de reposición, pero algún día puede ser que necesite para funcionar antes caso de reset)

+0

umm ... 'onreset'? :) –

+0

try [this] (http://stackoverflow.com/a/27949904/2835520) – IgniteCoders

+1

@MansApps: Eso rompería el botón de reinicio si JavaScript está desactivado. (Podría decirse que muy pocas personas usan el botón de reinicio, y muy pocas tienen JavaScript desactivado). –

Respuesta

6

Según MDN, la etiqueta <form> apoya un evento onreset .

Onreset se dispara antes del restablecimiento real del formulario; no parece haber ningún evento para después de reiniciar. Probé para ver si el reinicio desencadenaría un evento onchange para las entradas cuyos valores se restablecen, pero no parece.

Una solución para hacer algo después del restablecimiento podría establecer un indicador al restablecer, y luego usar el evento onblur del botón de reinicio (por lo que después de reiniciar, se ejecutará la próxima vez que haga clic en otra cosa). Una solución alternativa, por supuesto, es desencadenar un setTimeout para que su secuencia de comandos se ejecute poco tiempo después del reinicio. Cualquiera de los dos es un poco hack, me temo.

+0

Aceptando su respuesta porque ha citado una buena referencia. (aunque estaba esperando un enlace del W3C o del Centro de desarrollo de Mozilla) –

+0

Huh ... Debería haber probado antes ... Usar 'onreset' ejecutará el script ANTES de reiniciar, y no después. –

+0

Tiene razón cuando ocurre un reinicio. Editado para responder. –

1

Ha intentado

<form onreset="action()"> 

parece funcionar para mí para ejecutar la secuencia de comandos antes de restablecer el formulario. En cuanto a después ... No creo que sea compatible, posiblemente un setTimeout haría el truco.

2

Usted puede utilizar el evento "reset" del elemento "forma"

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

.... 

</form> 
2

encontrado una respuesta a esto que trabajaba para mí, así que pensé que había puesto que para cualquier otra persona que vino a través de este.

En lugar de <input type='reset'>, se puede utilizar un elemento de <button> con un controlador de clic que primero llama al método form.reset(), a continuación, puede añadir cualquier guiones que tiene que suceder después de la acción de restablecimiento.

Cuestiones relacionadas