Conflit entre simple clic et double clic

Conflit entre simple clic et double clic - HTML/CSS - Programmation

Marsh Posté le 22-11-2005 à 16:03:53    

Salut.
Je me retourne la tête depuis la fin de matinée, impossible de trouver une solution à ce problème.
En fait, je voudrais réaliser, en javascript, une action sur un simple clic (lancer une fonction chg(id)), et une autre action (uen fonction plus_moins(...)) sur le double clic.
Comme je l'avais prévu dès le début, lors du double clic, il fait également l'action du simple clic ...
Alors je me suis dis qu'on pouvait peut être jouer avec le timing sur un onmouseup, mais ça ne va pas non plus ...
Voici le code actuellement :

Code :
  1. function my_dbl_click(id)
  2. {
  3. if (!this.time)
  4. {
  5.  this.time = new Date();
  6.  return;
  7. }
  8. var tps = (((new Date()) - this.time)/1000)
  9. if (tps <= 0.3)
  10. {
  11.  plusmoins(document.getElementById('parametre_'+id),document.getElementById('parametre_plus_'+id),document.getElementById('parametre_moins_'+id), id);
  12. }
  13. else
  14. {
  15.  chg('modif_'+id);
  16. }
  17. this.time = null;
  18. }
  19. <a href="#" onmouseup="my_dbl_click(<?echo $niv1_navigation_id?> );";>
  20. <? echo $niv1_navigation_titre; ?>
  21. </a>


Ca ne fonctionne pas non plus, il ne lance la fonction chg que s'il y a deux clic espacés de plus de 300 ms ...
Je voudrais que ce soit sur un seul clic !
 
Quelqu'un aurait-il une idée ?


Message édité par Profil supprimé le 22-11-2005 à 16:04:42
Reply

Marsh Posté le 22-11-2005 à 16:03:53   

Reply

Marsh Posté le 22-11-2005 à 17:18:31    

up ...  :bounce:

Reply

Marsh Posté le 23-11-2005 à 09:37:15    

up ?  :bounce:

Reply

Marsh Posté le 23-11-2005 à 13:38:59    

please  :cry:

Reply

Marsh Posté le 23-11-2005 à 14:22:56    

bon en partant de ton code je t'ai fait ça:

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  4. <head>
  5.   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  6.   <meta name="author" content="Me" />
  7.   <title>Test</title>
  8.   <script type="text/javascript">
  9.    var currentObj;
  10.    function my_dbl_click(obj) {
  11.      currentObj = obj;
  12.      if (!obj.time) {
  13.        obj.previousTime = null;
  14.        obj.waiting = false;
  15.      } else {
  16.        obj.previousTime = obj.time;
  17.      }
  18.      obj.time = new Date();
  19.      if (! obj.waiting){
  20.        obj.waiting = true;
  21.        setTimeout("test()",300);
  22.      }
  23.    }
  24.    function test(){
  25.      if ( currentObj.previousTime != null) {
  26.        document.getElementById('disp').innerHTML = 'double';
  27.        currentObj.previousTime = null;
  28.        currentObj.time = null;
  29.      } else {
  30.        document.getElementById('disp').innerHTML = 'simple';
  31.        currentObj.time = null;
  32.      }
  33.      obj.waiting = false;
  34.    }
  35.   </script>
  36. </head>
  37. <body>
  38.      <a href="#" onmouseup="my_dbl_click(this);"> test </a>
  39.      <div id="disp"></div>
  40. </body>
  41. </html>


 
Alors il doit y avoir 30 fois plus simple, mieux ou ce que tu voudras mais j'ai pas trouvé :o
La c'est un peu dégueu vu que tu es obligé d'avoir 1 variable globale (currentObj)...
Enfin bon ça a l'air de marcher ...

Reply

Marsh Posté le 29-11-2005 à 09:55:09    

Merci beaucoup de ton aide, et désolé de ne pas avoir répondu plus tôt ...
ça fonctionne à peu près, je suis en train de l'adapter à ce que je veux faire.
@+

Reply

Marsh Posté le 29-11-2005 à 10:48:26    

C'est pour faire quoi ?
 
Sauf cas particulier, utiliser un double click sur une application web est une très mauvaise idée :( 99.9% des utilisateurs sont habitués au "simple click partout", alors introduire un double-click peut être suicidaire.
 
En plus, y'a ceux qui ont réglé leur double-click ultra rapide, ou ultra lent suivant leur aptitude à cliquer, alors imposer un délai de 300ms peut être suicidaire pour une partie des utilisateurs :(


Message édité par FlorentG le 29-11-2005 à 10:48:49
Reply

Marsh Posté le 29-11-2005 à 16:26:33    

Mon cas est un cas particulier ... je bannis les pop-ups et j'ai besoin d'une multitude de traitements sur un item affiché, j'utilise donc à la fois le simple clic et le double ...
Ce sera précisé dans la doc remise aux utilisateurs, à eux de se démerder avec leur double-click ultra rapide .... sachant qu'ils seront utilisateurs basiques non informaticiens, ça m'étonnerait fort qu'ils soient seulement à même de se douter qu'on peut régler la vitesse du double-click ...  ;)  

Reply

Sujets relatifs:

Leave a Replay

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