Comment faire html <select> élément de ressembler à “désactivé”, mais de transmettre des valeurs?
Quand je suis à la désactivation d'un
<select name="sel" disabled>
<option>123</option>
</select>
élément, il ne marche pas passer sa variable.
Quoi faire regarder comme des personnes handicapées, mais être dans l'état "normal"?
C'est parce que j'ai une liste de "choisit", et parfois, certains d'entre eux ont une valeur unique, de sorte que l'utilisateur doit comprendre qu'il n'a qu'une valeur sans cliquer dessus.
- Ne suffit-il pas qu'elle se concentre l'élément, voir la seule option, puis accepter qu'il n'y a qu'une option? S'ils ne peuvent pas faire n'importe quoi avec l'élément, il suffit d'utiliser régulièrement
input
avec unreadonly
attribut, ou un caché d'entrée. - Si elle n'a qu'une option, pourquoi a-t-elle besoin pour être en forme? Aussi, notez qu'un pas-un ignorant, l'utilisateur sera en mesure de changer l'sélectionnez une valeur facilement.
- Je suis heureux d', mais vous ne savez pas ce que c'est
- il semble que vous êtes en s'appuyant sur le formulaire de retour de valeur spécifique dont vous avez besoin. Avez-vous pensé que l'utilisateur peut envoyer n'importe quelle valeur que <select> élément? Vérifiez toujours votre formulaire. Si il ya juste une seule valeur possible, il ne faut pas s'en soucier du tout: le programme serait automatiquement remplir de toute façon, car il ne faut pas permettre à d'autres valeurs d'être sélectionné!
- Merci, Rookie, je le ferai. =)
- Il ya des moments où la demande du commettant, est parfaitement souhaitable de comportement. par exemple. Quand il y a normalement beaucoup d'options disponibles, mais une combinaison d'autres sélections sur le formulaire permet seulement 1 sélection spécifique. La sélection de l'option et la désactivation du contrôle serait de loin supérieur à d'autres javascript manigances.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le garder désactivé comme désiré, puis retirez les personnes handicapées de l'attribut avant que le formulaire est soumis.
Notez que si vous utilisez cette méthode, vous aurez envie de le désactiver par programme ainsi, parce que si le JS est désactivé ou n'est pas pris en charge, vous serez coincé avec l'sélectionnez désactivé.
document.getElementById('yourselectid').removeAttribute('disabled');
ou vous pouvez utiliser jQuery
.not(":selected")
avant de définir la propriété pour garder l'élément sélectionné est activé.Ma solution a été de créer un handicapé qui se classe dans le CSS:
et puis vous sélectionnez serait:
L'utilisateur serait pas en mesure de choisir toutes les valeurs, mais les sélectionner la valeur doit toujours être passée sur le formulaire de soumission.
pointer-events
, vous pouvez naviguer à l'aide de la souris.Si vous pouvez fournir une valeur par défaut pour vos sélections, vous pouvez utiliser la même approche pour les décoché les cases à cocher qui nécessite un caché d'entrée avant de l'élément actuel, que ce n'est pas le poste d'une valeur si on les laissait faire:
Ce sera fait, poste de la valeur "par défaut" (sans les guillemets, bien sûr) si la sélection est désactivée par javascript (jQuery) ou même si votre code écrit le code html de la désactivation de l'élément lui-même avec l'attribut: disabled="disabled".
Ajouter une classe
.disabled
et utiliser ce CSS:Démo: http://jsfiddle.net/ZCSRq/
On pourrait utiliser une autre cachée élément d'entrée avec le même nom et la même valeur que celle de l'désactivé liste. Cela permettra d'assurer que la valeur est passée dans $_POST variables.
Par exemple:
HTML:
Wow, j'ai eu le même problème, mais une ligne de code résolu mon problème. J'ai écrit
- Je envoyer le formulaire à un script php puis il imprime la valeur correcte pour chacune des options alors qu'il était "nul" avant de.
Me dire si cela fonctionne. Je me demande si cela ne fonctionne que sur la mienne en quelque sorte.
si vous ne voulez pas ajouter l'attribut disabled pouvez le faire par programmation
pouvez désactiver l'édition dans le
<select class="yourClass">
élément avec ce code:si vous voulez l'essayer pouvez le voir ici: https://jsfiddle.net/9kjqjLyq/