|
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