IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

clearTimeout , c'est pas clair !


Sujet :

jQuery

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Par défaut clearTimeout , c'est pas clair !
    Bonjour,

    Je précise tout de suite, le code ci-dessous contient du JQuery, mais il n''est pas la source du problème (en tout cas rien ne le laisse penser).

    Le script ci-dessous essaye d'instaurer un drag&drop entre plusieurs éléments d'une liste. Ces éléments sont des liens, ils sont donc également cliquable. Le but est donc de faire en sorte de délayer le clic pour l'annuler si l'utilisateur fait un drag&drop, ou le lancer finalement si l'utilisateur n'en fait pas (il s'agissait donc d'un clic).

    Problème : la pop-up (déclenchée par le clic) s'ouvre quand même à chaque fois alors que les "alert" sont déclenché quand attendues.

    Tentative de résolution : j'ai essayé de changer différents paramètres du drag&drop mais les "alert" montrent clairement que le résultat est celui attendu à ce niveau la.. il n'y a pas le clearTimeout qui ne fonctionne pas comme attendu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <script type="text/javascript">
    var t;
     
    $( function(){
     
    	$('a.object').click( function(){
     
    		var href = $(this).attr('href');
    		var id = $(this).attr('id');
     
    		t = setTimeout(function(){ // On instaure un délai pour empêcher le clic instantané ( qu'on ne veut pas si l'utilisateur veut en fait un drag&drop )
    			alert("trigger");
    			window.open(href,'popup_' + id, "config='height=640, width=940, scrollbars=yes, resizable=yes");
    		},300);
     
    		return false;
     
    	}).draggable({
    		distance: 10, // On attend un déplacement de 10px de l'élément draggable avant de déclencher l'événement "start" et commencer le drag
    		start: function(){
    			alert("start");
    			clearTimeout(t); // Le drag a commencé donc on annule la fonction clic.
    		},
    		revert: true
    	}).droppable({
    		accept: 'a.object',
    		drop: function(event, ui){
    			var fileFrom = ui.helper.text();
    			var fileTo = $(this).text();
    			var popup = window.open('?module=link&action=add&obj=RSK&fileFrom='+fileFrom+'&fileTo='+fileTo,"add_"+fileFrom,"height=380, width=950");
    		}
    	});
     
    });
    </script>
    Je joins une petite archive avec le code minimal pour tester.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/08/2012, 07h00
  2. code matlab n'est pas clair
    Par nanouchg dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 26/04/2011, 21h29
  3. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  4. API Windows , c'est pas trop clair
    Par ..::snake::.. dans le forum Windows
    Réponses: 9
    Dernier message: 15/02/2008, 17h44
  5. Index n'est pas a jour
    Par touhami dans le forum Paradox
    Réponses: 5
    Dernier message: 11/12/2002, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo