|
15 | 15 | if ( $.rails !== undefined ) {
|
16 | 16 | $.error('jquery-ujs has already been loaded!');
|
17 | 17 | }
|
18 |
| - |
| 18 | + |
19 | 19 | // Shorthand to make it a little easier to call public rails functions from within rails.js
|
20 | 20 | var rails;
|
21 | 21 | var $document = $(document);
|
|
182 | 182 | form.hide().append(metadataInput).appendTo('body');
|
183 | 183 | form.submit();
|
184 | 184 | },
|
185 |
| - |
| 185 | + |
| 186 | + // Helper function that returns form elements that match the specified CSS selector |
| 187 | + // If form is actually a "form" element this will return associated elements outside the from that have |
| 188 | + // the html form attribute set |
| 189 | + formElements: function(form, selector) { |
| 190 | + return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector) |
| 191 | + }, |
| 192 | + |
186 | 193 | /* Disables form elements:
|
187 | 194 | - Caches element value in 'ujs:enable-with' data store
|
188 | 195 | - Replaces element text with value of 'data-disable-with' attribute
|
189 | 196 | - Sets disabled property to true
|
190 | 197 | */
|
191 | 198 | disableFormElements: function(form) {
|
192 |
| - var elements = form.is('form') ? $(form[0].elements).filter(rails.disableSelector) : form.find(rails.disableSelector); |
193 |
| - elements.each(function() { |
| 199 | + rails.formElements(form, rails.disableSelector).each(function() { |
194 | 200 | var element = $(this), method = element.is('button') ? 'html' : 'val';
|
195 | 201 | element.data('ujs:enable-with', element[method]());
|
196 | 202 | element[method](element.data('disable-with'));
|
|
203 | 209 | - Sets disabled property to false
|
204 | 210 | */
|
205 | 211 | enableFormElements: function(form) {
|
206 |
| - var elements = form.is('form') ? $(form[0].elements).filter(rails.enableSelector) : form.find(rails.enableSelector); |
207 |
| - elements.each(function() { |
| 212 | + rails.formElements(form, rails.enableSelector).each(function() { |
208 | 213 | var element = $(this), method = element.is('button') ? 'html' : 'val';
|
209 | 214 | if (element.data('ujs:enable-with')) element[method](element.data('ujs:enable-with'));
|
210 | 215 | element.prop('disabled', false);
|
|
0 commit comments