onblur et boutons radio

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : onblur et boutons radio

par Genova » 24 juil. 2007, 13:26

Si tu peux, par exemple si tu as 10 bouttons radio avec les ID id_1 id_2 ... id_10 il te suffit de faire une boucle dans ta fonction, et de cacher tous les autres champs, sauf celui correspondant à ton boutton cliqué.

par Invité » 24 juil. 2007, 13:24

J'ai 10 boutons radio dans mon form dont le "one_otros".
Un clic sur "one_otros" affiche le champ de texte comme prévu et comme décrit plus haut.

l'utilité du onblur: je voudrais que le champ de texte ne s'affiche que si le one_otros est coché. Si on clique sur un autre bouton radio le champ de texte doit être remasqué. Je ne pense pas qu'un seul événement onclick puisse gérer cette situation...je me trompe?

par Shrell » 24 juil. 2007, 12:57

Je ne vois pas trop l'utilité du onBlur, je pense que le onClick devrait suffire pour les deux cas (coché, décoché)
Essaie sans le onblur pour voir ce que ça donne ?

par Invité » 24 juil. 2007, 12:42

super, la proposition de genova génère un code conforme!
J'ai donc ceci:
$form->addElement('radio','one','e.','Otros','e.Otros', array('onclick' => 'trans(this.id, \'one_otros\')', 'onblur' => 'trans(this.id, \'one_otros\')')); 
$form->addElement('text','one_otros','', 'id="one_otros"');
Quand onclick, trans() doit être déclenché, onblur aussi.
trans est une fonction qui change la propriété display de mon champ de texte id=one_otros.
En gros, le but est de masquer ou afficher le champ de texte quand on clique sur le bouton radio.
Voici la fonction js:
function trans (id1, id2)
{
	if (window.document.getElementById(id1).checked == false)
	{
		window.document.getElementById(id2).style.display="none";
	}
	if (window.document.getElementById(id1).checked == true)
	{
		window.document.getElementById(id2).style.display="block";
	}


}
Au chargement de la page (onload) mon champ de texte est masqué par défaut.
Le onclick fonctionne et fait apparaitre le champ de texte, mais le onblur ne le masque pas. Qu'est-ce qui m'échappe?

par Shrell » 24 juil. 2007, 12:29

essaie d'adapter ceci :

Code : Tout sélectionner

if (element.attachEvent) { element.attachEvent("onclick", function() {alert("click")}); } if (element.addEventListener) { element.addEventListener("click", function() {alert("click")}); }

par Genova » 24 juil. 2007, 12:28

Essaie comme ceci :
$form->addElement('radio','one','e.','Otros','e.Otros', array(
   'onclick' => 'trans(this.id, \'one_otros\')',
   'onblur' => 'trans(this.id, \'one_otros\')'
));

par Invité » 24 juil. 2007, 12:21

je te remercie de me répondre mais me proposer de ne pas utiliser pear quickform ne m'avance pas beaucoup...pour des milliers de raisons qui nous éloigneraient du sujet.

Est-il par exemple possible de déclencher des événements js sans qu'ils ne soient directement "collés" sur l'élément? J'ai testé ceci qui ne marche pas.
Dans le code formulaire:
$form->addElement('text','one_otros','', 'id="one_otros"');
et dans un fichier javascript inclus:
window.document.getElementById("one_otros").onfocus = alert("bonjour");
window.document.getElementById("one_otros").onblur = alert("aurevoir");
Le alert('bonjour') fonctionne une fois au chargement, de la page et ensuite plus de réaction du champ, ni onclick, ni onblur.

par Genova » 24 juil. 2007, 12:08

En écrivant du HTML à la main sans passer par une classe à l'intérêt discutable ?

par Invité » 24 juil. 2007, 12:04

finalement, la vraie question est: comment ajouter deux fonctions javascript à un même élément?

par Invité » 24 juil. 2007, 11:55

j'ai creusé un peu et voici mon pb:
j'utilise pear pour générer un formulaire, et j'ajoute des fonctions javascript, comme ceci:
$form->addElement('radio','one','e.','Otros','e.Otros', array('onclick="trans(this.id, \'one_otros\')"', 'onblur="trans(this.id, \'one_otros\')"'));
Comme vous le voyez, j'essaye de déclencher la fonction trans onclick et onblur.
Voici le html généré par ce code:
<input onclick="trans(this.id, 'one_otros')"="onclick="trans(this.id, 'one_otros')"" onblur="trans(this.id, 'one_otros')"="onblur="trans(this.id, 'one_otros')"" name="one" value="e.Otros" type="radio" id="qf_2c618f" />
L'événement onlick fonctionne, mais pas le onblur. Voyez vous pourquoi le code généré est mal formé?

par Invité » 24 juil. 2007, 10:10

regarde ici : les evenements associés aux elements
http://www.commentcamarche.net/javascript/jsevent.php3

sinon fait voir un bout de code sion on peut trop te dire !
:D

onblur et boutons radio

par Invité » 23 juil. 2007, 19:05

Bonjour,

J'ai créé une petite fonction qui s'execute onclick sur un bouton radio, ça marche très bien.
Je voudrais que cette meme fonction s'execute quand on clique ailleurs que sur le bouton radio (un autre élément du formulaire).
L'événement ne fonctionne pass onblur(), d'ou ma question: comment déclencher un événement quand un bouton radio perd le focus?