Comment exécuter le code JavaScript lorsqu'un formulaire est réinitialisé?

Je sais que nous pouvons joindre un gestionnaire au formulaire onsubmit … Mais comment pouvons-nous ajouter un gestionnaire à l'événement de réinitialisation du formulaire? (Généralement en cliquant sur <input type="reset"> )

Ou … Peut-être qu'il n'y a pas un tel événement … Donc, la question est de savoir comment fonctionner?

(En ce moment, je souhaite exécuter un gestionnaire après l'événement de réinitialisation, mais un jour, je devrais peut-être exécuter avant l'événement de réinitialisation)

Selon MDN , la <form> prend en charge un événement onreset .

Onreset déclenche avant la réinitialisation réelle du formulaire; Il ne semble pas y avoir d'événement après la réinitialisation. J'ai testé pour voir si la réinitialisation déclencherait un événement onchange pour les entrées dont les valeurs sont réinitialisées, mais elles ne semblent pas apparaître.

Une solution de contournement pour faire quelque chose après la réinitialisation pourrait consister à définir un indicateur lors de la réinitialisation, puis utiliser l'événement onblur du bouton de réinitialisation (alors, après la réinitialisation, il fonctionnerait la prochaine fois que vous cliquez sur autre chose). Une solution de rechange, bien sûr, est de déclencher un setTimeout afin que votre script se déroule peu de temps après la réinitialisation. L'un ou l'autre est un peu un hack, j'ai peur.

Vous pouvez utiliser l'événement "reset" de l'élément "form"

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

J'ai trouvé une réponse à cela qui a fonctionné pour moi, alors j'ai pensé que je l'afficherais pour quelqu'un d'autre qui a rencontré cela.

Au lieu de <input type='reset'> , vous pouvez utiliser un élément <button> avec un gestionnaire de clics qui appelle d'abord la méthode form.reset() , vous pouvez ajouter n'importe quel script que vous devez effectuer après l'action de réinitialisation.

As-tu essayé

 <form onreset="action()"> 

Semble fonctionner pour moi pour l'exécution du script avant de réinitialiser le formulaire. Quant à après … je ne pense pas que cela soit pris en charge, peut-être un setTimeout ferait l'affaire.