How do I make $.serialize() take into account those disabled :input elements? How do I make $.serialize() take into account those disabled :input elements? jquery jquery

How do I make $.serialize() take into account those disabled :input elements?


Temporarily enable them.

var myform = $('#myform'); // Find disabled inputs, and remove the "disabled" attributevar disabled = myform.find(':input:disabled').removeAttr('disabled'); // serialize the formvar serialized = myform.serialize(); // re-disabled the set of inputs that you previously enableddisabled.attr('disabled','disabled');


Use readonly inputs instead of disabled inputs:

<input name='hello_world' type='text' value='hello world' readonly />

This should get picked up by serialize().


You can use a proxied function (it affects both $.serializeArray() and $.serialize()):

(function($){    var proxy = $.fn.serializeArray;    $.fn.serializeArray = function(){        var inputs = this.find(':disabled');        inputs.prop('disabled', false);        var serialized = proxy.apply( this, arguments );        inputs.prop('disabled', true);        return serialized;    };})(jQuery);