Il semble que les éléments d'entrée désactivés par défaut soient ignorés par $.serialize()
. Y at-il un travail autour?
135
Il semble que les éléments d'entrée désactivés par défaut soient ignorés par $.serialize()
. Y at-il un travail autour?
textarea
mais pas un désactivéinput
.Réponses:
Activez-les temporairement.
la source
readonly
au lieu dedisabled
comme mentionné par Andrew ci-dessous.Utilisez des entrées en lecture seule au lieu d'entrées désactivées:
Cela devrait être récupéré par serialize ().
la source
Vous pouvez utiliser une fonction mandatée (elle affecte à la fois
$.serializeArray()
et$.serialize()
):la source
@ user113716 a fourni la réponse principale. Ma contribution ici est juste une subtilité jQuery en y ajoutant une fonction:
Exemple d'utilisation:
la source
Essaye ça:
la source
Je peux voir quelques solutions de contournement, mais personne n'a encore suggéré d'écrire votre propre fonction de sérialisation? Ici vous allez: https://jsfiddle.net/Lnag9kbc/
la source
Les éléments d'entrée désactivés ne sont pas sérialisés car «désactivés» signifie qu'ils ne doivent pas être utilisés, selon la norme W3C. jQuery respecte simplement la norme, même si certains navigateurs ne le font pas. Vous pouvez contourner ce problème, en ajoutant un champ masqué avec une valeur identique au champ désactivé, ou en le faisant via jQuery, quelque chose comme ceci:
De toute évidence, si vous aviez plusieurs entrées désactivées, vous devrez parcourir les sélecteurs correspondants, etc.
la source
Au cas où quelqu'un ne voudrait pas les activer, puis les désactiver à nouveau, vous pouvez également essayer de le faire (je l'ai modifié à partir des champs désactivés non repris par serializeArray , de l'utilisation d'un plugin à l'utilisation d'une fonction normale):
Vous pouvez donc les appeler comme ceci:
la source
code
3: {name: undefined, value: ""} 4: {name: undefined, value: ""}Juste au-dessus d'Aaron Hudon:
Peut-être que vous avez autre chose que Input (comme select), alors j'ai changé
à
la source