是)我有的:
我有一个表单,我通过AJAX提交.
<%= form_for([@map,@annotation],:remote => true ) do |f| %> ... <%= f.submit "Save annotation",:class => "btn btn-primary",:id => "annotation-submit-button" %> <% end %>
我想要的是:
我想防止双重提交.由于表单仅在请求成功完成后消失,因此只要数据库尚未完成数据写入,用户就可以单击提交按钮.显然,我不希望这样.
我尝试过的:
我尝试将此添加到提交按钮本身 – 但它不起作用.该按钮被禁用,但没有数据被发送.
:onclick => "this.disabled = true"
我也尝试在提交按钮中添加一个点击处理程序.这与以前的效果相同.实际上没有数据发送到控制器,但是按钮被禁用.
$("#annotation-submit-button").click(function(event) { $(this).attr("disabled","disabled"); return false; });
也尝试相同而不返回false.禁用该按钮后没有任何反应.
$("#annotation-submit-button").click(function(event) { $(this).prop("disabled","disabled"); });
我开始认为这是Rails特有的?
解决方法
在Rails 3及更高版本的视图中尝试
disable_with
:
<%= f.submit "Save annotation",:data => {:disable_with => "Saving..."},... %>
对于Rails 2:
<%= f.submit "Save annotation",:disable_with => "Saving...",... %>