problème évènement click

problème évènement click - HTML/CSS - Programmation

Marsh Posté le 22-07-2009 à 20:03:52    

Bonsoir.

 

J'aimerai une petite explication, j'ai le code suivant :

 
Code :
  1. Event.observe(window, 'mouseover', init);
  2. function init() {
  3. if ($("modif0" )) Event.observe("modif0","click",function (event) {modification_item(0);});
  4. }
  5. function modification_item() {
  6. alert ('test');
  7. }
 

Comment se fait-il que lors d'un clic sur l'élément d'id "modif0", j'ai plusieurs alert de suite ?

 

Edit : nom de la fonction corrigée, mais c'était pas ça le problème.


Message édité par Yagmoth le 22-07-2009 à 20:54:15

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
Reply

Marsh Posté le 22-07-2009 à 20:03:52   

Reply

Marsh Posté le 22-07-2009 à 20:50:29    

bizar ton code, a quoi elle sert ta fonction init ?, si tu click sur le bouton c'est que tu seras forcement passé dessus,
 
et la tu n'apelle nul par la function "modification"  ca dervai rien affiché  

Reply

Marsh Posté le 22-07-2009 à 20:51:40    

Je me trompe peut-être mais, si tu charge l'observation de tes boutons a chaque mouseover de ta fenetre, tu risque de charger plusieurs fois le trigger. Ca se cumule.
Et c'est pour ca que quand tu cliques, chaque trigger chargé lance une alerte.
Faut faire le trigger dans le onload du body. Une fois pour toute.

Message cité 1 fois
Message édité par Pascal le nain le 22-07-2009 à 20:52:18
Reply

Marsh Posté le 22-07-2009 à 20:58:45    

Pascal le nain a écrit :

Je me trompe peut-être mais, si tu charge l'observation de tes boutons a chaque mouseover de ta fenetre, tu risque de charger plusieurs fois le trigger. Ca se cumule.
Et c'est pour ca que quand tu cliques, chaque trigger chargé lance une alerte.
Faut faire le trigger dans le onload du body. Une fois pour toute.


 
Le problème c'est que je l'ai déjà testé (enfin dans le head), et que tout marche bien pour les boutons originellement en place, mais par contre pour les boutons générés via mes requêtes Ajax, il faut effectuer au final deux clics, le premier pour relancer init(). Et c'est pas possible dans mon optique, parce que d'une, c'est saoûlant, de deux, une fois le premier double clic effectué... la suite fonctionne avec un clic simple, le double clic n'étant nécessaire que lors de la première génération de boutons via Ajax.
 
Pas moyen d'éviter le cumul des triggers alors ? [:ciler]
 
@steakth35 : j'avais mal recopié le nom de ma fonction, mais bon dans mon code elle était juste :D Pour le reste, comme je viens de le dire, j'ai besoin de cette fonction init() pour réactualiser les event.observe sur les boutons nouvellement créés via mes requêtes Ajax.


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
Reply

Marsh Posté le 22-07-2009 à 21:10:58    

un onclick="" dans la balise c'est pas plus simple ? :p
Vu que tu génères tes boutons avec ajax, tu génères onclick="mafonction(X)"
Et dans ta fonction tu te sert du X...
 
C'est un peu lourd si tu as beaucoup de boutons, je te l'accorde.
 
Sinon passe sous jquery, c'est très simple ;)
J'ai pas beaucoup utilisé prototype, j'ai du mal à t'aider...

Reply

Marsh Posté le 22-07-2009 à 21:13:25    

jQuery possède moins de problèmes de ce côté la ?

 

Sinon je vais retenter le "onclick" sur les boutons générés, mais il me semble que ça ne marchait pas.
Edit : si, finalement, ça fonctionne. Ca va être très laid [:petrus75] Merci en tout cas :jap:


Message édité par Yagmoth le 22-07-2009 à 21:27:30

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
Reply

Marsh Posté le 22-07-2009 à 21:28:45    

Petite question encore, j'ai le code suivant :

Code :
  1. echo ' <a href="#"><img src="images/modif.png" name="'.$modif.'" id="'.$modif.'" onclick="modification_item($stockage)" /></a>';
  2. echo ' <a href="#"><img src="images/false.png" name="'.$suppr.'" id="'.$suppr.'" onclick="suppr_item($stockage)" /></a><br />';


 
Sans doute erroné, puisque les fonction appelées ne semblent pas appelées dès le premier clic ; qu'est ce qui déconne ici ?


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
Reply

Marsh Posté le 22-07-2009 à 21:35:42    

ya koi comme valeur dans $stockage ????


---------------
Blablaté par Harko
Reply

Marsh Posté le 22-07-2009 à 21:36:35    

gatsu35 a écrit :

ya koi comme valeur dans $stockage ????


 
C'est une variable php de type string (du genre "item35" par exemple).


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
Reply

Marsh Posté le 22-07-2009 à 21:37:55    

donc si je récapitule :
echo ' <a href="#"><img src="images/false.png" name="'.$suppr.'" id="'.$suppr.'" onclick="suppr_item($stockage)" /></a><br />';
si $stockage= "item35";

 

le résultat du echo sera : (je met que la fin :

Code :
  1. onclick="suppr_item(item35)"


maintenant tu réfléchis bien, mais alors bien à ce bout de code

 

PS : regarde le code généré par le navigateur stp, ou sert toi aussi d'outils tels que firebug et avec des petits console.log('texte', 'texte', texte')


Message édité par gatsu35 le 22-07-2009 à 21:38:39

---------------
Blablaté par Harko
Reply

Marsh Posté le 22-07-2009 à 21:37:55   

Reply

Marsh Posté le 22-07-2009 à 22:17:17    

Vu ;)


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
Reply

Marsh Posté le 22-07-2009 à 22:44:34    

c'est plutot  :
 
onclick="suppr_item('item35')"

Reply

Marsh Posté le 22-07-2009 à 23:27:24    

Oui :D Je me demandais juste comment ça allait être interprété par le navigateur en fait, j'ai fini par dl firebug pour avoir accès au code source.


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed