2

送信をすぐに空にしたいフォームフィールドがあります。通常、私は次のようなことをします:

$("#form").submit(function(e){
  e.preventDefault();
  $.post(/* custom craft request */);
  $("#field").val('');
});

Rails は を追加するとすべてのカスタム クラフトを処理しますが、送信:remote => true直後にバインドする方法が見つかりません。

ドキュメント ( http://guides.rubyonrails.org/ajax_on_rails.html ) では ajax:after イベントがあると主張していますが、存在しないようです。remote_form_for のような他の関数は 3.2 には存在しないため、このドキュメントは完全に古くなっているようです。

どんな助けでも大歓迎です。私が使用しているsetTimeoutは、本当にうまくいきません。

編集:私が置き換えたい作業 setTimeout ソリューションを追加します:

$("#form_id").submit(function(e){
    setTimeout(function(){ 
        //this will happen after submission     
    }, 15);
});
4

2 に答える 2

2

これを行うことで、ajax コールバックにアタッチできます。

$("#form").bind("ajax:send", function(e){
   $("#field").val('');
});

rails.js ライブラリを含めることを忘れないでください https://github.com/rails/jquery-ujs

于 2012-10-13T22:07:13.780 に答える
0

ujs wiki ( https://github.com/rails/jquery-ujs/wiki/ajax ) によると、すべての ajax グローバル イベントが利用可能です: http://docs.jquery.com/Ajax_Events

したがって、これでうまくいくはずです:

$("#form").bind("ajaxSend", function(){
  $("#field").val('');
});

リクエストが送信されるとすぐにイベントがトリガーされることを想定しています。それ以外の場合は、もちろん、次を使用して完了時にフィールドをクリアできます (失敗または成功の場合に機能します)。

$("#form").bind("ajax:complete", function(){
  $("#field").val('');
});
于 2012-10-16T21:57:50.163 に答える