|
192 | 192 | */ |
193 | 193 | disableFormElements: function(form) { |
194 | 194 | form.find(rails.disableSelector).each(function() { |
195 | | - var element, method, enabledState; |
| 195 | + var element, method, replacement; |
| 196 | + |
196 | 197 | element = $(this); |
197 | 198 | method = element.is('button') ? 'html' : 'val'; |
198 | | - enabledState = element[method](); |
| 199 | + replacement = element.data('disable-with'); |
| 200 | + |
| 201 | + element.data('ujs:enable-with', element[method]()); |
| 202 | + if (replacement !== undefined) { |
| 203 | + element[method](replacement); |
| 204 | + } |
199 | 205 |
|
200 | | - element.data('ujs:enable-with', enabledState); |
201 | | - element[method](element.data('disable-with') || enabledState); |
202 | 206 | element.prop('disabled', true); |
203 | 207 | }); |
204 | 208 | }, |
|
275 | 279 | // replace element's html with the 'data-disable-with' after storing original html |
276 | 280 | // and prevent clicking on it |
277 | 281 | disableElement: function(element) { |
278 | | - var enabledState = element.html(); |
279 | | - element.data('ujs:enable-with', enabledState); // store enabled state |
280 | | - element.html(element.data('disable-with') || enabledState); // set to disabled state |
| 282 | + var replacement = element.data('disable-with'); |
| 283 | + |
| 284 | + element.data('ujs:enable-with', element.html()); // store enabled state |
| 285 | + if (replacement !== undefined) { |
| 286 | + element.html(replacement); |
| 287 | + } |
| 288 | + |
281 | 289 | element.bind('click.railsDisable', function(e) { // prevent further clicking |
282 | 290 | return rails.stopEverything(e); |
283 | 291 | }); |
|
0 commit comments