Parece que, por defecto, los elementos de entrada deshabilitados son ignorados por $.serialize() . ¿Hay una solución?
Habilítelos temporalmente.
var myform = $('#myform'); // Find disabled inputs, and remove the "disabled" attribute var disabled = myform.find(':input:disabled').removeAttr('disabled'); // serialize the form var serialized = myform.serialize(); // re-disabled the set of inputs that you previously enabled disabled.attr('disabled','disabled');Use entradas de solo lectura en lugar de entradas deshabilitadas:
<input name='hello_world' type='text' value='hello world' readonly />Esto debería ser recogido por serialize().
Puede usar una función de proxy (afecta tanto a $.serializeArray() como $.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);