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 :

Changement d'état du curseur à la fin du traitement


Sujet :

jQuery

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut Changement d'état du curseur à la fin du traitement
    Bonjour,

    j'ai un bouton. Lorsque j'y clique dessus pour exécuter une action, le curseur se met en "wait" (il le reste tant qu'on est positionné sur le bouton).
    Je voudrai qu'à la fin du traitement il passe en "default".
    Sauriez-vous comment faire pour cela svp?

    https://jsfiddle.net/gmkxn7uh/

    Merci d'avance de votre aide.

    Cordialement,

    Arsène

    Code HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <button id="Action">Go</button>
    <br><br>
    <input id="buttonV" type="button" value="1" />
    Code JQUERY :

    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
    $('#Action').on('click',function() {
    $('#buttonV2').hide();
    $(this).css('cursor','wait');
    	increment(1);  
    });
     
    function increment(i) {
    	$('#buttonV').attr('value', i); 
    	if(i < 10) {
      	setTimeout(function() {
      		increment((i+1));
        }, 300);
    $(this).css('cursor','default');
    	}
    }

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 197
    Par défaut
    Bonjour,
    C'est parce que le contexte (le "this") n'est pas le même dans ta fonction que ton code ne fonctionne pas comme tu le souhaites.
    Tu peux faire quelque chose du genre :
    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
    $('#Action').on('click',function() {
    $('#buttonV2').hide();
    $(this).css('cursor','wait');
     
    	increment(1);
     
    });
     
    function increment(i) {
    	$('#buttonV').attr('value', i);  
     
    	if(i < 10) {
      	setTimeout(function() {
      		increment((i+1));
        }, 300);
    	}
      else
      {
          $("#Action").css( 'cursor', 'default' ); 
      }
     
    }

  3. #3
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Il te manque juste un else dans ta fonction increment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $('#Action').on('click', function () {
      $('#buttonV2').hide();
      $(this).css('cursor', 'wait');
      increment(1);
    });
     
    function increment(i) {
      $('#buttonV').val(i);
      if (i < 10) {
        setTimeout(function () { increment(i + 1); }, 300);
      } else {
        $('#Action').css('cursor', 'default');
      }
    }
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut
    Merci beaucoup,

    ça marche :

    https://jsfiddle.net/gmkxn7uh/1/

    Au départ je voulais désactiver un bouton durant la durée d'un traitement mais je me suis rendu compte que j'étais obligé de faire appel à la fonction setTimeout

    https://jsfiddle.net/v3yca8zs/5/

    car le code ci-dessous ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $('#Action').on('click',function() {
    $('#Action').prop( "disabled", true );
    	traitement();  
    $('#Action').prop( "disabled", false );
    });

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

Discussions similaires

  1. [JTextArea] Positionner le curseur à la fin
    Par frouge dans le forum Composants
    Réponses: 2
    Dernier message: 01/09/2005, 17h23
  2. [D6] Déplacer curseur à la fin dans TEdit
    Par Lung dans le forum Composants VCL
    Réponses: 2
    Dernier message: 23/08/2005, 13h02
  3. objet.value = ""; et laisser le curseur à la fin
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/08/2005, 21h11
  4. [JTextArea] comment mettre le curseur à la fin du texte
    Par romuluslepunk dans le forum Composants
    Réponses: 2
    Dernier message: 12/08/2005, 09h19
  5. Réponses: 2
    Dernier message: 18/12/2003, 23h12

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