Le standard HTML pour les formulaires semble être tel que les éléments d’entrée désactivés ne contribuent pas à la collection nom/valeur du formulaire.
Y a-t-il AUCUN moyen de contourner cela? Je dois pouvoir activer et désactiver la désactivation, mais toujours renvoyer quelle que soit la valeur indiquée lors de la soumission du formulaire.
Je réalise que je peux utiliser JavaScript pour copier la valeur sur une entrée masquée avant que le formulaire ne soit soumis, mais je préférerais que non. Y a-t-il un moyen plus propre?
J'utilise ASP.NET, mais ce n'est pas ça qui compte.
Vous devriez utiliser le drapeau readOnly
plutôt que disabled
. Les champs en lecture seule ne peuvent pas être modifiés par l'utilisateur, mais sont toujours soumis avec le formulaire.
<input type="text" value="blah" readonly="true"/>
Le standard HTML pour les formulaires semble être tel que les éléments d’entrée désactivés ne contribuent pas à la collection nom/valeur du formulaire.
C'est correct.
HACK: Vous pouvez utiliser Javascript pour, lors de la soumission:
Si vous faites la valeur readonly , au lieu de la désactiver, le nom/la valeur du champ sera envoyé avec le reste des champs non désactivés.
Faites en sorte que le gestionnaire d'événements focus des champs en lecture seule transmette le focus au prochain champ éligible, afin que celui-ci se comporte davantage comme un élément désactivé. Certains navigateurs vous permettent de vous concentrer et de sélectionner des champs en lecture seule, tandis que d'autres vous permettent même de les coller dans un champ en lecture seule, bien qu'ils reviennent à la valeur d'origine onblur and onchange.
<input type="text" value="" readonly="readonly">
En tant que variante légèrement plus robuste du piratage de Wayne (qui pourrait être confondu par un bouton Précédent poussé), lors de la désactivation d'un contrôle: définissez readonly= true
et className= 'disabled'
au lieu de disabled= true
, puis style .disabled
de manière à ressembler à un champ désactivé.
J'ai créé un plugin rapide (Jquery uniquement), qui enregistre la valeur dans un champ de données lorsqu'une entrée est désactivée . Cela signifie simplement que le champ est désactivé par programme via jquery à l'aide de .prop () ou .attr. () ... puis accéder à la valeur par .val (), .serialize () ou .serializeArra () renverra toujours la valeur, même si elle est désactivée :)
Je suppose que c'est un bidouillage, mais semble bien fonctionner pour moi. Faire les deux! L'utilisateur voit les entrées désactivées, clairement masquées et le navigateur empêche toute interaction - mais il n'est pas soumis avec le formulaire. L'utilisateur ne voit pas le champ en lecture seule potentiellement désorientant, mais il est soumis avec le formulaire.
<input name="mode_d" size="8" value="mode" disabled>
<input name="mode" value="mode" hidden readonly>
C'est simple seulement deux étapes
vérifie si l'entrée à laquelle vous souhaitez accéder est désactivée, puis supprimez son attribut "désactivé"
Obtenez la valeur, puis ajoutez à nouveau l'attribut désactivé.