Changeset 7079
- Timestamp:
- 06/22/07 15:44:15 (1 year ago)
- Files:
-
- spinoffs/prototype/branches/form/src/form.js (modified) (2 diffs)
- spinoffs/prototype/branches/form/test/unit/form.html (modified) (2 diffs)
- spinoffs/prototype/branches/form/TODO (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
spinoffs/prototype/branches/form/src/form.js
r7072 r7079 5 5 }, 6 6 7 serializeElements: function(elements, getHash) { 7 serializeElements: function(elements, options) { 8 if (typeof options != 'object') options = { hash: !!options }; 9 else if (options.hash === undefined) options.hash = true; 10 var key, value, submitted = false, submit = options.submit; 11 8 12 var data = elements.inject({}, function(result, element) { 9 13 if (!element.disabled && element.name) { 10 var key = element.name, value = $(element).getValue(); 11 if (value != null) { 12 if (key in result) { 14 key = element.name; value = $(element).getValue(); 15 if (value != null && (element.type != 'submit' || (!submitted && 16 submit !== false && (!submit || key == submit) && (submitted = true)))) { 17 if (key in result) { 18 // a key is already present; construct an array of values 13 19 if (result[key].constructor != Array) result[key] = [result[key]]; 14 20 result[key].push(value); … … 20 26 }); 21 27 22 return getHash ? data : Hash.toQueryString(data);28 return options.hash ? data : Hash.toQueryString(data); 23 29 } 24 30 }; 25 31 26 32 Form.Methods = { 27 serialize: function(form, getHash) {28 return Form.serializeElements(Form.getElements(form), getHash);33 serialize: function(form, options) { 34 return Form.serializeElements(Form.getElements(form), options); 29 35 }, 30 36 spinoffs/prototype/branches/form/test/unit/form.html
r7078 r7079 346 346 assertEnumEqual(Hash.toQueryString(expected).split('&').sort(), 347 347 Form.serialize('various').split('&').sort()); 348 assertEqual('string', typeof $('form').serialize({ hash:false })); 348 349 349 350 // Checks that disabled element is not included in serialized form. 350 351 $('input_enabled').enable(); 351 assertHashEqual({ 352 val1:4, action:'blah', 353 first_submit:'Commit it!', second_submit:'Delete it!' 354 }, 352 assertHashEqual({ val1:4, action:'blah', first_submit:'Commit it!' }, 355 353 $('form').serialize(true)); 356 354 … … 370 368 params = Form.serialize('selects_wrapper', true); 371 369 assertHashEqual(Object.extend(expected, { vu:1, 'vm[]':[1, 3], nvu:'One' }), params); 370 371 // explicit submit button 372 assertHashEqual({ val1:4, action:'blah', second_submit:'Delete it!' }, 373 $('form').serialize({ submit: 'second_submit' })); 374 assertHashEqual({ val1:4, action:'blah' }, 375 $('form').serialize({ submit: false })); 376 assertHashEqual({ val1:4, action:'blah' }, 377 $('form').serialize({ submit: 'inexistent' })); 372 378 }}, 373 379 spinoffs/prototype/branches/form/TODO
r7078 r7079 2 2 * [done] findFirstElement takes tabindexes into account (r6628 fixes #7595) 3 3 * [wontfix] is #3065 (findFirstElement) something the framework should care about? 4 * [done] fix #5031: Form.serialize with multiple submit buttons (related: #8211) 4 5 * Ability to intercept serialization for individual elements 5 * fix #5031: Form.serialize with multiple submit buttons (related: #8211)6 6 * research if #6326 (selectedIndex changes on hover) can be fixed 7 7 * #7909 (application/xhtml+xml) is a blocker (is this a DOM extensions issue??)