Je voudrais montrer un bouton radio, avoir sa valeur soumise, mais selon les circonstances, ne pas l'éditer. Désactivé ne fonctionne pas, car il ne soumet pas la valeur (ou le fait-il?), Et il grise le bouton radio. La lecture seule est vraiment ce que je recherche, mais pour une raison mystérieuse, cela ne fonctionne pas.
Y a-t-il une astuce étrange que je dois tirer pour que la lecture seule fonctionne comme prévu? Dois-je simplement le faire en JavaScript à la place?
Soit dit en passant, quelqu'un sait-il pourquoi la lecture seule ne fonctionne pas dans les boutons radio, alors qu'elle fonctionne dans d'autres balises d'entrée? Est-ce une de ces omissions incompréhensibles dans les spécifications HTML?
Réponses:
J'ai simulé en lecture seule un bouton radio en désactivant uniquement les boutons radio non cochés. Cela empêche l'utilisateur de sélectionner une valeur différente, et la valeur vérifiée sera toujours publiée lors de la soumission.
Utiliser jQuery pour faire de la lecture seule:
Cette approche a également fonctionné pour créer une liste de sélection en lecture seule, sauf que vous devrez désactiver chaque option non sélectionnée.
la source
readonly
propriété, comme l'OP s'attendait à ce qu'elle fonctionne:$(':radio[readonly]:not(:checked)').attr('disabled', true);
Les boutons radio n'auraient besoin d'être en lecture seule que s'il existe d'autres options. Si vous n'avez aucune autre option, un bouton radio coché ne peut pas être décoché. Si vous avez d'autres options, vous pouvez empêcher l'utilisateur de modifier la valeur simplement en désactivant les autres options:
Violon: http://jsfiddle.net/qqVGu/
la source
onclick="return false"
pour empêcher le changement.C'est l'astuce que vous pouvez suivre.
la source
onClick="this.checked = <%=value%>"
d'une certaine variété :)onclick="return false;"
pour conserver la même valeur pour le groupeJ'ai un long formulaire (250+ champs) qui publie sur une base de données. Il s'agit d'une demande d'emploi en ligne. Lorsqu'un administrateur examine une demande déposée, le formulaire est rempli avec des données de la base de données. Les textes d'entrée et les zones de texte sont remplacés par le texte qu'ils ont soumis, mais les radios et les cases à cocher sont utiles à conserver comme éléments de formulaire. Les désactiver les rend plus difficiles à lire. La définition de la propriété .checked sur false onclick ne fonctionnera pas car ils peuvent avoir été vérifiés par l'utilisateur remplissant l'application. De toute façon...
fonctionne comme un charme pour «désactiver» les radios et les cases à cocher ipso facto.
la source
La meilleure solution consiste à définir l'état vérifié ou non vérifié (à partir du client ou du serveur) et à ne pas laisser l'utilisateur le modifier après la protection (c'est-à-dire le rendre en lecture seule), procédez comme suit:
la source
J'ai trouvé un moyen lourd en javascript pour obtenir un état en lecture seule pour les cases à cocher et les boutons radio. Il est testé par rapport aux versions actuelles de Firefox, Opera, Safari, Google Chrome, ainsi que les versions actuelles et précédentes d'IE (jusqu'à IE7).
Pourquoi ne pas simplement utiliser la propriété pour handicapés que vous demandez? Lors de l'impression de la page, les éléments d'entrée désactivés apparaissent en gris. Le client pour lequel cela a été mis en œuvre voulait que tous les éléments soient de la même couleur.
Je ne sais pas si je suis autorisé à publier le code source ici, car j'ai développé cela en travaillant pour une entreprise, mais je peux sûrement partager les concepts.
Avec les événements onmousedown, vous pouvez lire l'état de sélection avant que l'action de clic ne le modifie. Vous stockez donc ces informations, puis restaurez ces états avec un événement onclick.
La partie javascript de cela fonctionnerait alors comme ceci (encore une fois seulement les concepts):
Vous pouvez désormais activer / désactiver les cases d'option / cases à cocher en modifiant les propriétés onclick et onmousedown des éléments d'entrée.
la source
Pour les boutons radio non sélectionnés, marquez-les comme désactivés. Cela les empêche de répondre aux entrées de l'utilisateur et d'effacer le bouton radio coché. Par exemple:
la source
checked="yes"
? Quelle est cette spécification? Soit utiliserchecked="checked"
soit juste l'attributchecked
sans valeur. Pareil pourdisabled
.Manière JavaScript - cela a fonctionné pour moi.
Raison:
$('#YourTableId').find('*')
-> cela renvoie toutes les balises.$('#YourTableId').find('*').each(function () { $(this).attr("disabled", true); });
itère tous les objets capturés dans ce champ et désactive les balises d'entrée.Analyse (débogage):
form:radiobutton
est considéré en interne comme une balise "d'entrée".Comme dans la fonction ci-dessus (), si vous essayez d'imprimer
document.write(this.tagName);
Partout où, dans les balises, il trouve des boutons radio, il renvoie une balise d'entrée.
Ainsi, la ligne de code ci-dessus peut être plus optimisée pour les balises de bouton radio, en remplaçant * par une entrée:
$('#YourTableId').find('input').each(function () { $(this).attr("disabled", true); });
la source
Une option assez simple serait de créer une fonction javascript appelée sur l'événement "onsubmit" du formulaire pour réactiver le bouton radio afin que sa valeur soit publiée avec le reste du formulaire.
Cela ne semble pas être une omission sur les spécifications HTML, mais un choix de conception (logique, à mon humble avis), un bouton radio ne peut pas être lu uniquement comme un bouton ne peut pas l'être, si vous ne voulez pas l'utiliser, alors le désactiver.
la source
J'ai trouvé que l'utilisation
onclick='this.checked = false;'
fonctionnait dans une certaine mesure. Un bouton radio sur lequel vous avez cliqué ne sera pas sélectionné. Cependant, s'il y avait un bouton radio qui était déjà sélectionné (par exemple, une valeur par défaut), ce bouton radio deviendrait non sélectionné.Pour ce scénario, laisser la valeur par défaut et désactiver les autres boutons radio préserve le bouton radio déjà sélectionné et l'empêche d'être désélectionné.
Cette solution n'est pas le moyen le plus élégant d'empêcher la modification de la valeur par défaut, mais elle fonctionnera, que javascript soit activé ou non.
la source
Essayez l'attribut
disabled
, mais je pense que vous n'obtiendrez pas la valeur des boutons radio. Ou définissez des images à la place comme:Meilleures salutations.
la source
J'utilise un plugin JS qui style les cases à cocher / éléments d'entrée radio et j'ai utilisé la requête jQuery suivante pour établir un `` état en lecture seule '' où la valeur sous-jacente est toujours publiée mais l'élément d'entrée semble inaccessible à l'utilisateur, ce qui est, je crois, la raison prévue nous utiliserions un attribut d'entrée en lecture seule ...
la source
Que diriez-vous de capturer un événement "On_click ()" dans JS et de le vérifier comme ici?:
http://www.dynamicdrive.com/forums/showthread.php?t=33043
la source