serialize form data array jquery serialization

jquery - form - Campos deshabilitados no recogidos por serializeArray



serialize table jquery (3)

(Pregunta actualizada para reflejar el problema real)

Acabo de darme cuenta de que serializeArray no está recuperando contenido de los campos deshabilitados.

Un conjunto de campos de dirección (calle) se rellena seleccionando un elemento de una lista de autosuggest . Una vez hecho esto, los campos están deshabilitados. Podría cambiar esto para que sea read only , pero quiero que se vea y se sienta deshabilitado sin tener que cambiar CSS.

¿Hay alguna forma de que serializeArray capture los datos de los campos deshabilitados?

Solución

Gracias a Mohammad, creé un pequeño complemento que me ayuda a resolver mi problema:

( Fiddle )

var form_data = $(''form'').serializeAll(); (function ($) { $.fn.serializeAll = function () { var data = $(this).serializeArray(); $('':disabled[name]'', this).each(function () { data.push({ name: this.name, value: $(this).val() }); }); return data; } })(jQuery);


Prueba esto

var data = $(''form'').serializeAllArray();

Y aquí está el pequeño plugin que se usa.

(function ($) { $.fn.serializeAllArray = function () { var obj = {}; $(''input'',this).each(function () { obj[this.name] = $(this).val(); }); return $.param(obj); } })(jQuery);

También puede intentar habilitar todos sus elementos solo para serializarlos y luego deshabilitarlos después de serializar.

var myform = $(''#form''); var disabled = myform.find('':input:disabled'').removeAttr(''disabled''); var serialized = myform.serializeArray(); disabled.attr(''disabled'',''disabled'');


puede usar readonly serializeArray () puede leerlo.


$(''#field'').removeAttr(''disabled''); var formData = $(this).serializeArray(); $(''#field'').attr(''disabled'', ''disabled'');

La solución anterior es mejor: alternativamente, puede eliminar el atributo deshabilitado del elemento, serializar los campos y luego volver a agregar el atributo.