Parece que, por defecto, los elementos de entrada deshabilitados son ignorados por $.serialize()
. ¿Hay alguna solución?
135
Parece que, por defecto, los elementos de entrada deshabilitados son ignorados por $.serialize()
. ¿Hay alguna solución?
textarea
pero no un deshabilitadoinput
...Respuestas:
Habilítelos temporalmente.
fuente
readonly
lugar dedisabled
lo mencionado por Andrew a continuación.Use entradas de solo lectura en lugar de entradas deshabilitadas:
Esto debería ser recogido por serialize ().
fuente
Puede usar una función proxy (afecta a ambos
$.serializeArray()
y$.serialize()
):fuente
@ user113716 proporcionó la respuesta central. Mi contribución aquí es solo una gentileza de jQuery al agregarle una función:
Ejemplo de uso:
fuente
Prueba esto:
fuente
Puedo ver algunas soluciones, pero ¿nadie sugirió escribir su propia función de serialización? Aquí tienes: https://jsfiddle.net/Lnag9kbc/
fuente
Los elementos de entrada deshabilitados no se serializan porque 'deshabilitado' significa que no deben usarse, según el estándar W3C. jQuery solo cumple con el estándar, aunque algunos navegadores no lo hacen. Puede solucionar este problema agregando un campo oculto con un valor idéntico al campo deshabilitado, o haciendo esto a través de jQuery, algo como esto:
Obviamente, si tuviera más de una entrada deshabilitada, tendría que iterar sobre los selectores coincidentes, etc.
fuente
En caso de que alguien no quiera activarlos, luego deshabilítelos nuevamente, también puede intentar hacer esto (lo modifiqué desde los campos Deshabilitados que no fueron recogidos por serializeArray , desde usar un complemento hasta usar una función normal):
Entonces puedes llamarlos así:
fuente
code
3: {nombre: indefinido, valor: ""} 4: {nombre: indefinido, valor: ""}Justo sobre Aaron Hudon:
Tal vez tenga algo más que Entrada (como select), así que cambié
a
fuente