我有一个通过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。禁用按钮后没有任何反应。
false
$("#annotation-submit-button").click(function(event) { $(this).prop("disabled", "disabled"); });
我开始认为这是特定于Rails的东西?
disable_with在Rails 3及更高版本的视图中尝试如下所示:
disable_with
<%= f.submit "Save annotation", :data => {:disable_with => "Saving..."}, ... %>
对于Rails 2:
<%= f.submit "Save annotation", :disable_with => "Saving...", ... %>