prototype-ujs
prototype-ujs copied to clipboard
Rails 3 disable with remote form button immediately re-enabled
Taken from:https://rails.lighthouseapp.com/projects/8994/tickets/5714-rails3-disable_with-remote-form-button-immediately-gets-re-enabled
When submitting a remote form with a "disable_with" option, the reasonable expectation is that the button will be re-enabled after the ajax response. Instead, the button is immediately re-enabled after the request is made but before the response is received. The problem is that the re-enabling code in rails.js (lines 167-174) is fired on ajax:after:
document.on("ajax:after", "form", function(event, element) { var inputs = element.select("input[type=submit][disabled=true][data-disable-with]"); inputs.each(function(input) { input.value = input.readAttribute('data-original-value'); input.removeAttribute('data-original-value'); input.disabled = false; }); }); If changed to be ajax:complete (line 167):
document.on("ajax:complete", "form", function(event, element) { //original code here } The code works as expected: the button is disabled until the ajax response is received.
I get the exact same behaviour. I have had to rename the "ajax:after" event handler to an "ajax:complete" one to get my button to be disabled. Is this issue being fixed any time soon or should we settle with renaming the event handler?