serialize n'inclut pas les champs cachés

Je lance serialize sur un formulaire, où l'un des Champs est caché - et c'est un champ très important, qui devrait être posté. Est - il possible de le sérialiser facilement via jQuery ou devrais-je écrire ma propre fonction?

57
demandé sur gruszczy 2009-08-14 17:22:42

6 réponses

Sérialiser est-ce que inclure tous les permis de input d'éléments de avec name attribut.

114
répondu Josh Stodola 2009-08-14 14:48:32

Peut-être que combiner les deux dans un seul sélecteur fonctionnerait?

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

Edit: je viens d'essayer ce qui précède et cela a fonctionné. mais, $("forme").serialize(); doit automatiquement prendre toutes les entrées comme d'autres l'ont mentionné.

2
répondu Jim Schubert 2009-08-14 14:57:24

Voici une variation étrange sur ce problème. Les champs cachés ont des noms.

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

Affiche correctement une fenêtre avec tous les champs cachés. Mais

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

N'a pas les champs cachés. Lorsque le script php fait print_r($_POST) les cases cachées et les cases à cocher sont mising

1
répondu Bob 2011-03-25 20:14:32

Juste couru dans ce problème moi-même, et piraté une solution.

Le problème a à voir avec la façon dont JQuery récupère les informations html cachées. Il ne prendra pas le texte d'un champ caché comme valeur, vous devez utiliser la propriété value=.

Pour le définir dans jQuery utilisez $(field).val(yourvalue);

1
répondu KilleR 2012-10-01 04:10:34

Vous devez ajouter un nom à tous les éléments pour que la fonction serialize fonctionne correctement

0
répondu Cengiz Önkal 2011-07-29 22:56:10

J'ai eu ce problème aussi. Par habitude, je ferme mes champs de saisie avec />. J'ai trouvé que l'entrée cachée ne fonctionne pas lorsqu'elle est fermée de cette façon.

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

Ne fonctionne pas.

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

Fonctionne.

-3
répondu Mark Tebault 2016-11-15 20:52:11