Как запустить код JavaScript при сбросе формы? - PullRequest
5 голосов
/ 09 сентября 2010

Я знаю, что мы можем прикрепить обработчик к форме onsubmit ... Но как мы можем добавить обработчик к событию сброса формы? (обычно при нажатии на <input type="reset">)

Или ... Может быть, такого события нет ... Так что возникает вопрос, как это обойти?

(сейчас я хочу запустить обработчик после события сброса; но когда-нибудь мне может понадобиться запустить до события сброса)

Ответы [ 4 ]

6 голосов
/ 09 сентября 2010

Согласно MDN , тег <form> поддерживает событие onreset.

Onreset срабатывает до фактического сброса формы;после сброса события не отображаются.Я проверил, чтобы увидеть, вызовет ли сброс событие onchange для входов, значения которых сбрасываются, но это не так.

Обходной путь для выполнения чего-либо после сброса может заключаться в установке флага сброса, а затем используйте событие onblur кнопки сброса (поэтому после сброса она будет запускаться при следующем нажатии на что-то еще).Альтернативный обходной путь, конечно, состоит в том, чтобы вызвать setTimeout, чтобы ваш скрипт запускался через некоторое время после сброса.Боюсь, любой из них взломан.

2 голосов
/ 03 августа 2012

нашел ответ на этот вопрос, который работал для меня, поэтому я решил опубликовать его для всех, кто сталкивался с этим.

Вместо <input type='reset'> вы можете использовать элемент <button> сщелкните обработчик, который сначала вызывает метод form.reset(), затем вы можете добавить любой сценарий, необходимый для выполнения действия сброса.

2 голосов
/ 09 сентября 2010

Вы можете использовать событие «reset» элемента «form»

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

....

</form>
1 голос
/ 09 сентября 2010

Вы пробовали

<form onreset="action()">

Похоже, у меня работает запуск скрипта перед сбросом формы.Что касается после ... Я не думаю, что это поддерживается, возможно, setTimeout поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...