2009-08-14 34 views
54

Ejecuto serializar en un formulario, donde se oculta uno de los campos, y es un campo muy importante que debe publicarse. ¿Hay alguna forma de serializarlo fácilmente a través de jQuery o debería escribir mi propia función?serializar no incluye campos ocultos

+4

'serialize' debe incluir campos ocultos. ¿Podemos ver el marcado y el guion? – VoteyDisciple

+2

Los únicos campos en los que puedo pensar que no deberían incluirse serían los campos desactivados. – Powerlord

+2

Serialize incluye campos ocultos, pero no deshabilitados. ++ al querer ver el marcado y la secuencia de comandos. – 48klocs

Respuesta

103

Serializehace incluyen todos los elementos habilitados inputcon un atributoname.

+0

¿por qué jquery usa el atributo name para serializar un formulario, en lugar de usar el atributo id? – frabiacca

+11

@frabiacca Porque el atributo 'name' es el identificador de los datos POST http://www.w3schools.com/tags/att_input_name.asp –

+0

Tengo problemas con las casillas de verificación que tienen la pantalla style/css: none. Ellos no son recogidos. –

2

¿Quizás combinar los dos en un solo selector funcionaría?

$(":input,:hidden").serialize(); 

editar: Acabo de probar lo anterior y funcionó. pero, $ ("form"). serialize(); debe tomar automáticamente todas las entradas como otros han mencionado.

+0

Lo hace solo si tiene un atributo de nombre que termina siendo la clave del objeto. –

1

Aquí hay una extraña variación de este problema. Los campos ocultos tienen nombres.

alert($("#myForm").serialize()) 

estallidos correctamente una ventana con todos los campos ocultos. Pero

$.post('myposts.php', $("#myForm").serialize(), function(data) { 
      $('#myResult').html(data); 
     }); 

No contiene los campos ocultos. Cuando el script php hace print_r($_POST) lo oculto y casillas de verificación se Mising

+0

¿Alguna vez descubrió por qué sucede esto? – bytebender

+1

esto sucede porque su entrada está afuera (use el elemento inspeccionar para ver) el atributo del formulario, antes de publicar puede '$ ('su html oculto'). AppendTo ('# myForm');' –

0

usted debe agregar el nombre a todos los elementos para la función serialize funcione correctamente

1

acabo de encontrar con este problema a mí mismo, y cortado a una solución.

El problema tiene que ver con la forma en que JQuery recoge la información html oculta. No recogerá el TEXTO de un campo oculto como su valor, debe usar la propiedad value =.

para ponerlo en JQUERY utilizar $(field).val(yourvalue);

-2

tuve este problema también. Por costumbre, cierro mis campos de entrada con />. Descubrí que la entrada oculta no funciona cuando se cierra de esta manera.

<input type="hidden" name="someName" value="someValue" /> 

no funciona.

<input type="hidden" name="someName" value="someValue" > 

funciona.

Cuestiones relacionadas