diff --git a/dist/jquery.serialize-object.min.js b/dist/jquery.serialize-object.min.js index 6153c3b..bf224ba 100644 --- a/dist/jquery.serialize-object.min.js +++ b/dist/jquery.serialize-object.min.js @@ -5,4 +5,4 @@ * @license BSD * @version 2.5.0 */ -!function(e,i){if("function"==typeof define&&define.amd)define(["exports","jquery"],function(e,r){return i(e,r)});else if("undefined"!=typeof exports){var r=require("jquery");i(exports,r)}else i(e,e.jQuery||e.Zepto||e.ender||e.$)}(this,function(e,i){function r(e,r){function n(e,i,r){return e[i]=r,e}function a(e,i){for(var r,a=e.match(t.key);void 0!==(r=a.pop());)if(t.push.test(r)){var u=s(e.replace(/\[\]$/,""));i=n([],u,i)}else t.fixed.test(r)?i=n([],r,i):t.named.test(r)&&(i=n({},r,i));return i}function s(e){return void 0===h[e]&&(h[e]=0),h[e]++}function u(e){switch(i('[name="'+e.name+'"]',r).attr("type")){case"checkbox":return"on"===e.value?!0:e.value;default:return e.value}}function f(i){if(!t.validate.test(i.name))return this;var r=a(i.name,u(i));return l=e.extend(!0,l,r),this}function d(i){if(!e.isArray(i))throw new Error("formSerializer.addPairs expects an Array");for(var r=0,t=i.length;t>r;r++)this.addPair(i[r]);return this}function o(){return l}function c(){return JSON.stringify(o())}var l={},h={};this.addPair=f,this.addPairs=d,this.serialize=o,this.serializeJSON=c}var t={validate:/^[a-z_][a-z0-9_]*(?:\[(?:\d*|[a-z0-9_]+)\])*$/i,key:/[a-z0-9_]+|(?=\[\])/gi,push:/^$/,fixed:/^\d+$/,named:/^[a-z0-9_]+$/i};return r.patterns=t,r.serializeObject=function(){return new r(i,this).addPairs(this.serializeArray()).serialize()},r.serializeJSON=function(){return new r(i,this).addPairs(this.serializeArray()).serializeJSON()},"undefined"!=typeof i.fn&&(i.fn.serializeObject=r.serializeObject,i.fn.serializeJSON=r.serializeJSON),e.FormSerializer=r,r}); +!function(e,r){if("function"==typeof define&&define.amd)define(["exports","jquery"],function(e,i){return r(e,i)});else if("undefined"!=typeof exports){var i=require("jquery");r(exports,i)}else r(e,e.jQuery||e.Zepto||e.ender||e.$)}(this,function(e,r){function i(e,i,t){function a(e,r,i){return e[r]=i,e}function s(e,r){for(var i,t=e.match(n.key);void 0!==(i=t.pop());)if(n.push.test(i)){var s=u(e.replace(/\[\]$/,""));r=a([],s,r)}else n.fixed.test(i)?r=a([],i,r):n.named.test(i)&&(r=a({},i,r));return r}function u(e){return void 0===z[e]&&(z[e]=0),z[e]++}function o(e){switch(r('[name="'+e.name+'"]',i).attr("type")){case"checkbox":return m.encodes.checkbox?"on"===e.value||e.value:e.value;case"number":case"num":if(!m.encodes.number)return e.value;var n=parseInt(e.value);return isNaN(n)?e.value:n;default:return e.value}}function d(r){if(!n.validate.test(r.name))return this;var i=s(r.name,o(r));return v=e.extend(!0,v,i),this}function c(r){if(!e.isArray(r))throw new Error("formSerializer.addPairs expects an Array");for(var i=0,n=r.length;i'); + assert.deepEqual($form.serializeObject({'encodes': { 'checkbox': true } }), {a: true}); + }); + + it("checkbox inputs as strings if encode option turned off", function() { + var $form = $('
'); + assert.deepEqual($form.serializeObject({'encodes': { 'checkbox': false } }), {a: "on"}); + }); + + it("checkbox inputs as booleans if encode option not provided", function() { + var $form = $('
'); + assert.deepEqual($form.serializeObject(), {a: true}); + }); + + it("number inputs as numbers if encode option turned on", function() { + var $form = $('
'); + assert.deepEqual($form.serializeObject({'encodes': { 'number': true } }), {a: 6}); + }); + + it("number inputs as strings if encode option turned off", function() { + var $form = $('
'); + assert.deepEqual($form.serializeObject({'encodes': { 'number': false } }), {a: "6"}); + }); + + it("number inputs as strings if encode option not provided", function() { + var $form = $('
'); + assert.deepEqual($form.serializeObject(), {a: "6"}); + }); + + it("number inputs as empty strings if encode option turned on but empty field", function() { + var $form = $('
'); + assert.deepEqual($form.serializeObject({'encodes': { 'number': true } }), {a: ""}); + }); + });