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 :

Démarrer une série d'événements au click


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Par défaut Démarrer une série d'événements au click
    Bonjour,

    je travaille actuellement sur la réalisation d'un comparatif de temps de chargement et pour se faire j'utilise une barre de progression animée en java script pour un effet visuel. Je souhaite que le visiteur clique sur un bouton et que l'animation démarre.

    Mon soucis est que j'arrive à lancer l'animation sans problème au chargement de la page, mais pas au clique de la souris (je suis débutant en jquery/JS).

    Voici mon code :

    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
     
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>demo</title>
    	<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
    	<script type="text/javascript">
     
     
    		function modifValues(){
        	var val = $('#progress progress').attr('value');
        	if(val>=100){val=100;}
        	var newVal = val*1+0.25;
        	var txt = Math.floor(newVal)+'%';      
        	$('#progress progress').attr('value',newVal).text(txt);
        	$('#progress strong').html(txt);
        	}
     
    		setInterval(function (){ modifValues(); },40)
     
    	</script>
    </head>
    <body>
     
     	<p><button>Run</button></p>
    	<div >ADSL</div>
    	<div id="progress">
        	<p>Retrieving data...<strong>0%</strong></p>
        	<progress value="5" min="0" max="100">0%</progress>
    	</div>
     
    </body>
    </html>
    Merci de votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Developpeur web/Java
    Inscrit en
    Février 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Developpeur web/Java
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2008
    Messages : 98
    Par défaut
    Il suffit d'utiliser la fonction click disponible

    Ce qui va te donner un code de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     $(document).ready(function(){
    	$('#bt_run').click(function() {
    		setInterval(function (){ modifValues(); },40)
    	});
     });
    en ajoutant bien sûr un id sur ton button dans le html.

    Après il te reste à gérer de ne pas pouvoir cliquer 2 fois sur le boutton run sinon les appels vont se cumuler, de plus il faudrait que tu modifies ta façon de faire pour éviter que la fonction modifValues s'appelle toujours quand les 100% sont atteint

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Par défaut
    merci de ta réponse bapfuror.

    j'ai essayer cette méthode sans succès (surement une erreur de ma part)

    je viens juste de trouver une solution (peut être pas la meilleur)

    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
     
    <script type="text/javascript" src="jquery-1.10.2.min.js"></script>
    <script type="text/javascript">
     
    function chargement() {
     
    		setInterval(function (){ modifValues(); },40);
     
     
    }
    function modifValues(){
        var val = $('#progress progress').attr('value');
        if(val>=100){val=100;}
        var newVal = val*1+0.25;
        var txt = Math.floor(newVal)+'%';      
     
        $('#progress progress').attr('value',newVal).text(txt);
        $('#progress strong').html(txt);
        clique=0
    }
    </script>
    <input type="submit" value="go"id="button" width="220" height="220" onclick="chargement()">
    <div class="float">ADSL</div>
    <div id="progress">
        <p>Retrieving data...<strong>0%</strong></p>
        <progress value="5" min="0" max="100">0%</progress>
    pour l'arret de la fonction modifValues j'ai vu sur l'api jquery qu'on pouvait arrêter une fonction une fois une variable atteinte. Mais quel est la meilleur solution ? rajouter un when (value=100) newVal = 0 ?

    Je ne suis pas encore penché sur la question et un avis m'aidera surement à y voir plus clair

  4. #4
    Membre confirmé
    Homme Profil pro
    Developpeur web/Java
    Inscrit en
    Février 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Developpeur web/Java
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2008
    Messages : 98
    Par défaut
    Pour arrêter setInterval tu peux utiliser clearInterval

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Par défaut
    donc je rajoute une condition :

    when (value>=100){

    clearInterval

    }

    c'est bien ça ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Developpeur web/Java
    Inscrit en
    Février 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Developpeur web/Java
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2008
    Messages : 98
    Par défaut
    Il faut que tu stockes dans une variable l'id de ton timer :
    Puis que tu stoppes en utilisant clearInterval avec en paramétre l'id du timer stocké

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] évènement après click sur une date
    Par Godard dans le forum IHM
    Réponses: 4
    Dernier message: 22/05/2009, 09h05
  2. [2.3] Action sur double-click sur une série
    Par Robiwan59 dans le forum BIRT
    Réponses: 1
    Dernier message: 19/08/2008, 11h43
  3. évènement sur click pour 50 boutons d'une form
    Par timotep dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/07/2008, 11h56
  4. Réponses: 2
    Dernier message: 21/09/2007, 11h37
  5. Créer une série dans un chart
    Par cyrose dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/11/2002, 11h37

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