2012-02-21 10 views
7

Estoy usando $(this).serialize() al enviar un formulario.jQuery: form serialize, campos ocultos y campos que no se muestran

funciona bien, excepto en los momentos en los que (por alguna razón) tengo 2 campos con el mismo nombre (uno visible, y no uno, y yo no estoy hablando de type="visible" pero display:none) ...

Pero por supuesto serialize no tiene respeto por esto ... simplemente los toma a todos.

yo probamos este

var $disabled_list = $(this).find('input:hidden,select:hidden,textarea:hidden').attr('disabled', 'disabled'); 
$(this).serialize(); 
$disabled_list.attr('disabled',''); 

y lo es resolver mi problema, salvo el selector: escondido, también toma type = "oculto"

¿cuál es la forma correcta?

Respuesta

18

Usted no tiene que llamar serialize() en el <form> en sí, que puede coincidir con algunos de sus controles y llamarlo en el conjunto resultante. Esto le permite evitar retoques con los atributos disabled.

Puesto que desea controles de juego :hidden sólo si también se exponen en realidad el tipo hidden, puede utilizar el siguiente selector:

$(this).find("input[type='hidden'], :input:not(:hidden)").serialize(); 
+0

gracias, mejor solución que la mía –

0
var $disabled_list = $(this).find('input:hidden,select:hidden,textarea:hidden').not('input[type=hidden]').attr('disabled', 'disabled'); 

trataron de esta manera y parece que funciona

2

Usted puede utilizar form.find $ ('Visible'). Serializar ()

Cuestiones relacionadas