11548 sujets

JavaScript, DOM et API Web HTML5

Hello, j'ai dans mon formulaire 4 options fonctionnant avec des boutons radio.
Pour la 4e option ("autre"); il y a un champs "son_autre" où l'on peut spécifier des données supplémentaires.

Quand on clique sur autre, le focus se met direct dans le champs "son_autre".
Maintenant, j'aimerais qu'inversément, quand on clique direct dans le champs, le bouton radio "autre" se sélectionne tout seul...
J'ai dû faire une erreur, mais je vois pas où !

Voici mon code

	  <input type="radio" name="son" value="1" onClick="this.form.son_autre.value=''"> <?php echo $lang_EF_28?><br>
	  <input type="radio" name="son" value="2" onClick="this.form.son_autre.value=''"> <?php echo $lang_EF_29?><br>
	  <input type="radio" name="son" value="3" onClick="this.form.son_autre.value=''"> dolby stéréo<br>
	  <input type="radio" name="son" value="4" onClick="this.form.son_autre.focus()"> Autre : <input name="son_autre" type="text" maxlength="20" onClick="this.form.son.value='4'"><br>
Ajoute un id à ton 4ème radio si ce n'est pas déjà fait, et ensuite mets quelque chose dans ce goût-là dans ton input text :
document.getElementById('son4').checked=true;

IL serait peut-être plus judicieux de détecter la frappe sur un premier caractère dans le champ texte (attention, pas simplement l'appui d'une touche !) plutôt que sur le gain du focus ou le clic sur le champ.

Je vais m'expliquer sur le pourquoi de cette remarque : si je navigue dans ton formulaire uniquement avec le clavier :

- Onclick n'est jamais déclenché : donc je peux saisir du texte dans ton input text sans que le radio associé ne soit coché. Conséquence, les données seront peut-être invalides et/ou incomplètes.

- Onfocus : Là effectivement le bouton radio sera automatiquement coché à l'arrivée sur le champ. Le problème c'est que ce n'est peut-être pas ce que je veux, car je suis obligé de passer sur ce champ à un moment donné pour pouvoir aller aux suivants.

- Si tu détectes que je saisis un premier caractère dans le champ, par contre alors à ce moment-là tu peux être sûr que c'est bien cette option que j'ai choisie, donc tu peux cocher automatiquement le radio.

Il va de soi que c'est un plus de laisser le champ texte disponible plutôt que de le griser si le radio n'est pas coché, mais il faut ensuite faire les choses complètement, ce qui n'est pas si simple que ça (c'est pour cette raison que la solution de griser le champ si le radio n'est pas coché est monnaie courante : c'est plus facile à développer)