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 回答