Comment puis-je faire $.serialize() de prendre en compte les personnes handicapées :les entrées des éléments?
Il semble désactivée par défaut des éléments d'entrée sont ignorés par $.serialize()
. Est-il une solution?
- C'est encore plus étrange, parce que vous pouvez sérialiser un handicapé
textarea
mais pas désactivéinput
..
Vous devez vous connecter pour publier un commentaire.
Temporairement leur permettre.
readonly
au lieu dedisabled
comme mentionné par Andrew ci-dessous.Utilisation readonly entrées au lieu de disabled entrées:
Ce devrait être repris par la fonction serialize().
Vous pouvez utiliser un proxy fonction (il affecte à la fois
$.serializeArray()
et$.serialize()
):@user113716 fourni l'essentiel de la réponse. Ma contribution ici est juste un jQuery nicety par l'ajout d'une fonction pour ça:
Exemple d'utilisation:
Désactivé éléments d'entrée ne pas être sérialisé parce que "désactivé" signifie qu'ils ne doivent pas être utilisés, par standard du W3C. jQuery est juste de respecter la norme, même si certains navigateurs ne le font pas. Vous pouvez contourner ce problème, par l'ajout d'un champ caché avec une valeur identique au champ désactivé, ou en faisant cela, via jQuery, quelque chose comme ceci:
Évidemment, si vous avez eu plus d'une entrée bloquée, vous devez effectuer une itération sur l'appariement des sélecteurs, etc.
Je peux voir quelques solutions de contournement, mais encore personne n'a suggéré d'écrire votre propre fonction de sérialisation? Ici, vous allez: https://jsfiddle.net/Lnag9kbc/
Essayez ceci:
Au cas où quelqu'un ne souhaitez pas les activer, puis les désactiver à nouveau, vous pouvez également essayer de le faire (je l'ai modifié à partir de Désactivé les champs ne sont pas détectés par serializeArray, de l'aide d'un plugin à l'aide d'une fonction normale):
De sorte que vous pouvez les appeler comme ceci:
Un peu plus de Aaron Hudon :
Peut-être vous avez quelque chose d'autre que l'Entrée (comme le sélectionner), alors j'ai changé
à