18041 sujets
Questions générales et questions de débutants
a écrit :
Alors si tu preferes, je cherche un type de check box où un seul choix est possible et lorsque tu en choisi une l'autre s'efface.
Ok dans ce cas il s'agit bien de radio buttons à utiliser.
Voici un exemple (un seul choix possible du fait de la valeur de l'attribut name) :
<input type="radio" id="choix1" name="choix" /> <label for="choix1">Choix 1</label>
<input type="radio" id="choix2" name="choix" /> <label for="choix2">Choix 2</label>
Bonne continuation.
Romain
Bonjour,
Je ne suis pas un expert, éventuellement pas super bien réveillé, mais un bouton "reset" ne peut pas servir dans ce cas de figure ?
Mais je dis "peut-être" une bétise, et les spécialistes voudront bien m'en excuser
Je retourne dormir
Bonne journée,
Cdt,
Sylvain
Je ne suis pas un expert, éventuellement pas super bien réveillé, mais un bouton "reset" ne peut pas servir dans ce cas de figure ?
<form>
<p><input type="radio" id="choix1" name="choix" /> <label for="choix1">Choix 1</label></p>
<p><input type="radio" id="choix2" name="choix" /> <label for="choix2">Choix 2</label></p>
<p><input type="reset" value="Reset"/></p>
</form>
Mais je dis "peut-être" une bétise, et les spécialistes voudront bien m'en excuser
Je retourne dormir
Bonne journée,
Cdt,
Sylvain
Solution scabreuse : utiliser du JS...
Je pense que la solution de 6l20 est pas mal si tu n'as que des boutons radios dans ton form... dans le cas contraire la meilleure solution est surement d'ajouter un bouton radio avec comme label "Aucun choix" ou encore d'utiliser une combobox avec une option vide...
Edit : @Yodaswii > Je te rassure je n'avais pas compris la demande avant de lire le post de 6l20
Modifié par skywalk3r (28 May 2008 - 10:41)
Je pense que la solution de 6l20 est pas mal si tu n'as que des boutons radios dans ton form... dans le cas contraire la meilleure solution est surement d'ajouter un bouton radio avec comme label "Aucun choix" ou encore d'utiliser une combobox avec une option vide...
Edit : @Yodaswii > Je te rassure je n'avais pas compris la demande avant de lire le post de 6l20
Modifié par skywalk3r (28 May 2008 - 10:41)
Salut batssa ,
le problème pour faire ce que tu demandes c'est qu'à priori le seul évènement qu'on peut intercepter est le onclick mais qu'à ce moment-là dans le script le bouton est déjà coché (qu'il l'ait déjà été avant ou non). Peut-être existe-t-il un moyen de faire que je ne connais pas !
Quoi qu'il en soit je ne vois que cette solution qui utilise un input hidden pour sauvegarder le dernier bouton cliqué :
Mais au fait : ça sert à quoi ?
A+
Edit: : @skywalk3r > c'est vrai que c'est bizarre mais pourquoi faire simple...
Modifié par Heyoan (28 May 2008 - 11:12)
le problème pour faire ce que tu demandes c'est qu'à priori le seul évènement qu'on peut intercepter est le onclick mais qu'à ce moment-là dans le script le bouton est déjà coché (qu'il l'ait déjà été avant ou non). Peut-être existe-t-il un moyen de faire que je ne connais pas !
Quoi qu'il en soit je ne vois que cette solution qui utilise un input hidden pour sauvegarder le dernier bouton cliqué :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>test radio</title>
<script type="text/javascript">
function addEventOnClick ()
{
// addEventListener sur le onclick
var btns_radio = document.getElementsByName("choix");
for (btn = 0; btn < btns_radio.length; btn++) {
addEvent(btns_radio[ btn ], 'click', TestChecked, false);
}
}
//fonction addEvent
function addEvent(oElem, sEvType, fn, bCapture)
{
return oElem.addEventListener?
oElem.addEventListener(sEvType, fn, bCapture):
oElem.attachEvent?
oElem.attachEvent('on' + sEvType, fn):
oElem['on' + sEvType] = fn;
}
//fonction onclick sur un bouton radio
function TestChecked(event)
{
// On récupère l'id du bouton cliqué
btn_checked = event.target || window.event.srcElement;
var id_btn = btn_checked.id;
// Si c'est le même que le dernier cliqué, on le désélectionne
if (id_btn == document.getElementById("last_btn_checked").value) {
document.getElementById(id_btn).checked = false;
document.getElementById("last_btn_checked").value = "none";
} else {
document.getElementById("last_btn_checked").value = id_btn;
}
}
window.onload = addEventOnClick;
</script>
</head>
<body>
<form id="monform" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<p>
<input type="radio" id="choix1" name="choix" /> <label for="choix1">Choix 1</label>
<input type="radio" id="choix2" name="choix" /> <label for="choix2">Choix 2</label>
<input type="radio" id="choix3" name="choix" /> <label for="choix3">Choix 3</label>
<input type="radio" id="choix4" name="choix" /> <label for="choix4">Choix 4</label>
<input type="hidden" name="last_btn_checked" id="last_btn_checked" value="none" />
<input type="submit" />
</p>
</form>
</body>
</html>
Mais au fait : ça sert à quoi ?
A+
Edit: : @skywalk3r > c'est vrai que c'est bizarre mais pourquoi faire simple...
Modifié par Heyoan (28 May 2008 - 11:12)
Bonjour,
Et sinon, une solution rédactionnelle peut-être?
Le dernier choix correspond à «aucun choix». Dans un sondage, c'est le fameux «sans opinion».
Si les navigateurs ne permettent pas d'annuler la sélection d'un bouton radio, c'est que dans la quasi-totalité des formulaires il est prévu qu'un choix doive être fait. On pourrait imaginer que les navigateurs permettent d'annuler la sélection en cliquant sur le bouton radio sélectionné, mais cette solution serait loin d'être explicite ou évidente, donc pas terrible pour l'ergonomie du formulaire.
La solution est donc rédactionnelle et ergonomique, pas technique. Comme souvent avec les formulaires, lorsqu'on cherche à faire quelque chose de non standard c'est que l'on a négligé une solution simple (et souvent: moins glamour, mais plus efficace).
Et sinon, une solution rédactionnelle peut-être?
<h2>Are you...</h2>
<p>
<input type="radio" name="choice" id="choice1" value="1">
<label for="choice1">mad?</label><br />
<input type="radio" name="choice" id="choice2" value="2">
<label for="choice2">relaxed?</label><br />
<input type="radio" name="choice" id="choice3" value="3">
<label for="choice3">comfy?</label><br />
<input type="radio" name="choice" id="choice0" value="0">
<label for="choice0">none of the above?</label>
</p>
Le dernier choix correspond à «aucun choix». Dans un sondage, c'est le fameux «sans opinion».
Si les navigateurs ne permettent pas d'annuler la sélection d'un bouton radio, c'est que dans la quasi-totalité des formulaires il est prévu qu'un choix doive être fait. On pourrait imaginer que les navigateurs permettent d'annuler la sélection en cliquant sur le bouton radio sélectionné, mais cette solution serait loin d'être explicite ou évidente, donc pas terrible pour l'ergonomie du formulaire.
La solution est donc rédactionnelle et ergonomique, pas technique. Comme souvent avec les formulaires, lorsqu'on cherche à faire quelque chose de non standard c'est que l'on a négligé une solution simple (et souvent: moins glamour, mais plus efficace).
Florent V. a écrit :
Bonjour,
Et sinon, une solution rédactionnelle peut-être?
<h2>Are you...</h2> <p> <input type="radio" name="choice" id="choice1" value="1"> <label for="choice1">mad?</label><br /> <input type="radio" name="choice" id="choice2" value="2"> <label for="choice2">relaxed?</label><br /> <input type="radio" name="choice" id="choice3" value="3"> <label for="choice3">comfy?</label><br /> <input type="radio" name="choice" id="choice0" value="0"> <label for="choice0">none of the above?</label> </p>
Le dernier choix correspond à «aucun choix». Dans un sondage, c'est le fameux «sans opinion».
Si les navigateurs ne permettent pas d'annuler la sélection d'un bouton radio, c'est que dans la quasi-totalité des formulaires il est prévu qu'un choix doive être fait. On pourrait imaginer que les navigateurs permettent d'annuler la sélection en cliquant sur le bouton radio sélectionné, mais cette solution serait loin d'être explicite ou évidente, donc pas terrible pour l'ergonomie du formulaire.
La solution est donc rédactionnelle et ergonomique, pas technique. Comme souvent avec les formulaires, lorsqu'on cherche à faire quelque chose de non standard c'est que l'on a négligé une solution simple (et souvent: moins glamour, mais plus efficace).
Clair, net, précis.
Merci M'sieur
skywalk3r a écrit :Ben amha non vu qu'un seul choix est possible et exclut les autres, ce qui correspond bien au bouton radio ...
@Florent V. (ou les autres) : L'utilisation d'une combobox est-elle appropriée ici avec une option "pas de choix"?
Mais on pourrait utiliser les combobox et rajouter une petite touche de JS pour dé-sélectionner les cases déjà cochées !
Edit: Oups ! Je viens de me relire et je vois que j'ai confondu combobox et checkbox ! Et du coup je dirais plutôt : Yes ! Why not !
Modifié par Heyoan (28 May 2008 - 12:12)
Oula merci ya plein de réponses!
A la question
J'ai une liste de produits qu'un commercial doit présenter à une certaine personne. Cette personne va attribuer une note de 0 à 3 (les 4 boutons radio pour chaque produit). Si une note a été attribuée ca veut dire que le produit a été présenté, sinon pas. Donc au cas ou le commercial se plante de ligne et coche un bouton pour un produit non présenté, je voudrais qu'il puisse revenir en arrière en cochant le meme bouton pour annuler.
C'est exactement ca le problème
Je vais essayer ta solution javascript!
Sinon au niveau du bouton reset, c'est pas trop possible dans mon cas sinon ca efface tout et en plus c'est un programme pour telephone donc j'aimerai conserver de l'espace, voila voila
Enfin, pour la solution de florent, c'est celle que j'utilise déja en attendant de faire ce que je n'arriverai pas a faire..
En tout cas merci a tous pour vos réponses
A la question
a écrit :
Mais au fait : ça sert à quoi lol ?
J'ai une liste de produits qu'un commercial doit présenter à une certaine personne. Cette personne va attribuer une note de 0 à 3 (les 4 boutons radio pour chaque produit). Si une note a été attribuée ca veut dire que le produit a été présenté, sinon pas. Donc au cas ou le commercial se plante de ligne et coche un bouton pour un produit non présenté, je voudrais qu'il puisse revenir en arrière en cochant le meme bouton pour annuler.
a écrit :
le problème pour faire ce que tu demandes c'est qu'à priori le seul évènement qu'on peut intercepter est le onclick mais qu'à ce moment-là dans le script le bouton est déjà coché (qu'il l'ait déjà été avant ou non). Peut-être existe-t-il un moyen de faire que je ne connais pas rolleyes !
C'est exactement ca le problème
Je vais essayer ta solution javascript!
Sinon au niveau du bouton reset, c'est pas trop possible dans mon cas sinon ca efface tout et en plus c'est un programme pour telephone donc j'aimerai conserver de l'espace, voila voila
Enfin, pour la solution de florent, c'est celle que j'utilise déja en attendant de faire ce que je n'arriverai pas a faire..
En tout cas merci a tous pour vos réponses
a écrit :
@Florent V. (ou les autres) : L'utilisation d'une combobox est-elle appropriée ici avec une option "pas de choix"?
Question intéressante à soulver. Voici mon avis : Pour moi, une série de boutons radio ou une liste déroulante à sélection unique remplissent exactement la même fonction : permettre à l'utilisateur de choisir une option parmi plusieurs prédéfinies. Aussi, il me paraît que les deux sont toujours interchangeables dans tous les cas de figure, qu'il s'agisse de formulaire web, de boîte de dialogue, ou d'interface utilisateur en général, d'ailleurs.
Le critère déterminant qui me fera pencher plutôt pour l'un que pour l'autre est le nombre d'options disponibles. Il ne viendrait probablement à l'idée de personne d'utiliser des boutons radio au-delà de 6 ou 7 possibilités (ça commence à prendre de la place), donc on se tournerait plutôt du côté des combo. De même il faut avouer que quand on n'a que 2, 3 ou 4 options, les boutons radio sont plus sympas parce qu'on a une vue d'ensemble des options disponibles car ils sont tous affichés. Dans le cas de la liste, il faut d'abord la dérouler.
La difficulté c'est de savoir si le click va opérer avant ou après le script de décochage du bouton !
D'où une solution consistant à repérer le bouton coché dans une variable globale et à laisser agir le navigateur en décochant le bouton après un certain délai grâce à un setTimeout.
Pour faire court avec des onclick="btn(this)" sur chaque bouton identifié par un attribut id le script pourrait être :
Modifié par Julien de Prabere (28 May 2008 - 15:23)
D'où une solution consistant à repérer le bouton coché dans une variable globale et à laisser agir le navigateur en décochant le bouton après un certain délai grâce à un setTimeout.
Pour faire court avec des onclick="btn(this)" sur chaque bouton identifié par un attribut id le script pourrait être :
var btnCkd='';
function btn(t){
if (t.id==btnCkd) {setTimeout("nbt()",7);return false;}
btnCkd=t.id;return true;
}
function nbt(){
document.getElementById(btnCkd).checked=false;
btnCkd='';
}
Modifié par Julien de Prabere (28 May 2008 - 15:23)
QuentinC a écrit :
Question intéressante à soulver. Voici mon avis : Pour moi, une série de boutons radio ou une liste déroulante à sélection unique remplissent exactement la même fonction : permettre à l'utilisateur de choisir une option parmi plusieurs prédéfinies. Aussi, il me paraît que les deux sont toujours interchangeables dans tous les cas de figure, qu'il s'agisse de formulaire web, de boîte de dialogue, ou d'interface utilisateur en général, d'ailleurs.
Le critère déterminant qui me fera pencher plutôt pour l'un que pour l'autre est le nombre d'options disponibles. Il ne viendrait probablement à l'idée de personne d'utiliser des boutons radio au-delà de 6 ou 7 possibilités (ça commence à prendre de la place), donc on se tournerait plutôt du côté des combo. De même il faut avouer que quand on n'a que 2, 3 ou 4 options, les boutons radio sont plus sympas parce qu'on a une vue d'ensemble des options disponibles car ils sont tous affichés. Dans le cas de la liste, il faut d'abord la dérouler.
Reflexion intéressante, j'ai tendance à faire comme cela aussi, en ajoutant que l'avantage des boutons radio est aussi qu'on n'a pas forcément que du texte en guise de choix (qui sait, une image, une image et du texte...) et le texte ne tient pas forcément sur une ligne ou dans une combobox de largeur raisonnable...
Modifié par skywalk3r (28 May 2008 - 15:22)