我有一个表单字段,我想立即清空提交。通常我会做类似的事情:
$("#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);
});
答案 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('');
});