52

HTMLリセットボタンをクリックした後、

<input type="reset" />

いくつかのコードを実行したいと思います。これを行う前にフォームがリセットされたことを確認するにはどうすればよいですか?

4

10 に答える 10

61

ベンがここで行っているように setTimeout を使用するのが最善です: https://stackoverflow.com/a/21641295/144665

$("input[type='text']").val('Hello Everybody!');

$("input[type='reset']").closest('form').on('reset', function(event) {

  // executes before the form has been reset
  console.log('before reset: ' + $("input[type='text']").val());

  setTimeout(function() {
    // executes after the form has been reset
    console.log('after reset: ' + $("input[type='text']").val());
  }, 1);

});

おそらくIDを使用して、そのフォームセレクターを関連する特定のフォームに絞り込むことができます。

フィドルプルーフ: http://jsfiddle.net/iambriansreed/Zh5cd/

于 2012-04-25T16:09:40.757 に答える
3

<input type='Reset'>この方法でuseを使用する代わりに、ボタン<input type = "button">のデフォルトの動作を停止する必要がないことをお勧めします。resetボタンに属性を追加するだけonclickで、関数内でフォームのリセット メソッドを任意の場所で呼び出すことができ、必要に応じて動作を制御できます。次のコードは、

HTML:

<input type="button" value="Limpiar" onclick="resetForm(this);"/>

JavaScript:

function resetForm(element) {
    //Do what you need before reset the form
    element.form.reset(); //Reset manually the form
    //Do what you need after reset the form
}
于 2015-01-14T18:25:22.367 に答える
3

更新:preventDefaultの代わりに使用しreturn falseます。

$('input[type="reset"]').click(function(evt) {
    // Prevent the reset button from firing the form's reset event again
    evt.preventDefault();
    $(this).closest('form').get(0).reset();
    // At this point your form's inputs should have their values reset
});

http://jsfiddle.net/EYqrX/1/

于 2012-04-25T16:13:00.957 に答える
0

試す

$('your-form').bind('reset', function() {
  alert('hi');
});
于 2012-04-25T16:00:16.377 に答える
-1

これは役に立ちますか

  $("input[type='reset']").on("click", function(){
    alert("the form has been reset");
  });

jsfiddleへのリンク:http://jsfiddle.net/sdkTz/1/

于 2012-04-25T16:02:10.090 に答える
-5

リセットボタンにイベントを追加し、click次のようにします。

function(e) {
    setTimeout(function() {
        // your actual code here
    },1);
}
于 2012-04-25T16:08:46.623 に答える