Prevent double submits in a Rails AJAX form Prevent double submits in a Rails AJAX form ajax ajax

Prevent double submits in a Rails AJAX form


Try disable_with in the view like this for Rails 3 and above:

<%= f.submit "Save annotation", :data => {:disable_with => "Saving..."}, ... %>

For Rails 2:

<%= f.submit "Save annotation", :disable_with => "Saving...", ... %>


Disabling the button should work just fine.

Just disable the button in the same function where you execute your ajax-call.

$("#annotation-submit-button").click(function(event) {  // do ajax call  $.ajax(...);  // disable the button  $(this).prop("disabled", true);  // prevent the standard action  return false;});

However, as of jQuery 1.6 you should use prop() instead of attr().

Edit:

In reply to your comment try omitting the return false; so you don't interrupt the execution of the formsubmit via Rails.

$("#annotation-submit-button").click(function(event) {  // disable the button  $(this).prop("disabled", "disabled");  // do not return false since this stops the event propagation});


By jQuery:you can do the following to handle the action you want

$.ajax({  .....,  beforeSend: function (){ $('#your-button').attr('disabled', 'disabled'); },  success: function (){     // Here you can enable the button  }});

Hope this may help you