Create a gist now

Instantly share code, notes, and snippets.

JQuery Serialize Method with Checkbox False Output
(function ($) {
$.fn.serialize = function (options) {
return $.param(this.serializeArray(options));
};
$.fn.serializeArray = function (options) {
var o = $.extend({
checkboxesAsBools: false
}, options || {});
var rselectTextarea = /select|textarea/i;
var rinput = /text|hidden|password|search/i;
return this.map(function () {
return this.elements ? $.makeArray(this.elements) : this;
})
.filter(function () {
return this.name && !this.disabled &&
(this.checked
|| (o.checkboxesAsBools && this.type === 'checkbox')
|| rselectTextarea.test(this.nodeName)
|| rinput.test(this.type));
})
.map(function (i, elem) {
var val = $(this).val();
return val == null ?
null :
$.isArray(val) ?
$.map(val, function (val, i) {
return { name: elem.name, value: val };
}) :
{
name: elem.name,
value: (o.checkboxesAsBools && this.type === 'checkbox') ? //moar ternaries!
(this.checked ? 'true' : 'false') :
val
};
}).get();
};
})(jQuery);
@TaoK
Owner
TaoK commented Jan 6, 2012

Modification to jquery serialize() method, to optionally support boolean serialization instead of standard http-form-submission-compliant checkbox serialization (name=value on true only).

Written by Thomas Danemar at http://tdanemar.wordpress.com/2010/08/24/jquery-serialize-method-and-checkboxes/, copied here for tracking/version control.

@TaoK
Owner
TaoK commented Jan 7, 2012

To easily consume serialization data generated with this "checkboxesAsBools" option, you can use the "jquery.deserialize" plugin: https://github.com/itsadok/jquery.deserialize

@ddaydd
ddaydd commented Mar 3, 2016

Thanks, bur missing type email in rinput.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment