From 8f47b72543d4ff51b32b7be28bae9deeba7a3b76 Mon Sep 17 00:00:00 2001 From: pgericson Date: Tue, 22 Jan 2013 16:18:16 +0100 Subject: [PATCH] Fixed array.length > 2 bug and made camelCase optional camelCase should be optional and not forced for a general purpose application Array over 2 did not work --- jquery.serializeObject.js | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/jquery.serializeObject.js b/jquery.serializeObject.js index e86ec52..e4daec1 100644 --- a/jquery.serializeObject.js +++ b/jquery.serializeObject.js @@ -15,28 +15,30 @@ // $('
').data() // => { favoriteColor: 'yellow' } // -$.fn.serializeObject = function () { - var result = Object.create(null); - var mapper = function (element) { - element.name = $.camelCase(element.name); - return element; - }; - var extend = function (i, element) { - var node = result[element.name]; +$.fn.serializeObject = function (camelCase) { + var result = Object.create(null); + var mapper = function (element) { + if ('undefined' !== typeof camelCase && camelCase === true) { + element.name = $.camelCase(element.name); + } + return element; + }; + var extend = function (i, element) { + var node = result[element.name]; // If node with same name exists already, need to convert it to an array as it // is a multi-value field (i.e., checkboxes) - if ('undefined' !== typeof node && node !== null) { - result[element.name] = node.push ? node.push(element.value) : [node, element.value]; - } else { - result[element.name] = element.value; - } - }; + if ('undefined' !== typeof node && node !== null) { + node.push ? result[element.name].push(element.value) : result[element.name] = [node, element.value]; + } else { + result[element.name] = element.value; + } + }; // For each serialzable element, convert element names to camelCasing and // extend each of them to a JSON object - $.each($.map(this.serializeArray(), mapper), extend); - return result; + $.each($.map(this.serializeArray(), mapper), extend); + return result; };