Rails 3.2:remote =>是的,绑定到提交后

时间:2012-10-13 20:51:06

标签: ruby-on-rails ajax ruby-on-rails-3 ruby-on-rails-3.2

我有一个表单字段,我想立即清空提交。通常我会做类似的事情:

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

当我添加:remote => true时,Rails会处理所有自定义工具,但在提交后我找不到立即绑定的方法。

文档(http://guides.rubyonrails.org/ajax_on_rails.html)坚持认为有一个ajax:事件之后,但似乎并不存在。显然这个文档已经过时了,因为3.2

中不存在remote_form_for等其他函数

感谢任何帮助。我正在使用的setTimeout确实不太好。

编辑:添加我要替换的工作setTimeout解决方案:

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

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式附加到ajax回调:

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

不要忘记包含rails.js库https://github.com/rails/jquery-ujs

答案 1 :(得分: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('');
});