Skip to content

Instantly share code, notes, and snippets.

@TaoK
Created January 6, 2012 21:38
Show Gist options
  • Save TaoK/1572512 to your computer and use it in GitHub Desktop.
Save TaoK/1572512 to your computer and use it in GitHub Desktop.
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
Copy link
Author

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
Copy link

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