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 :

Amélioration du fonctionnement des sliders


Sujet :

jQuery

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut Amélioration du fonctionnement des sliders
    Salut,

    J'aimerais amélioré mon code, car actuellement lorsque je bouge mon slider, j'obtiens une valeur et lorsque je relâche le slider la valeur se décale à 0.5 près.

    Donc je suppose que je n'utilise pas la bonne manière de faire.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
        // Consignes des sondes de temperature 'sliders'
        var mx = unit === '°C' ? 40 : 104;
        var st = unit === '°C' ? 0.5 : 1;
     
        $( '.tempsetpoint' ).slider({range: 0}, { max: mx },{ value: 0 },{step : st});
     
        $( '.tempsetpoint' ).bind( 'slide', function() 
        {
            var sid = $(this).attr('name');
            var setPoint = $( '.tsp'+sid ).slider( 'option', 'value' );
            setPoint = unit === '°C' ? (Number(setPoint).toFixed(1)) : (Number(setPoint*9/5+32).toFixed(0));
    		//Show value
    		$('#tempsetpoint'+sid).html(setPoint+unit);
            $( '.temp1'+sid ).show();
            $( '.temp2'+sid ).hide();
            $( '.temp3'+sid ).hide();
    	});
     
        // Nouvelles consignes des sondes de temperature 'sliders'
        $( '.tempsetpoint' ).bind( 'slidestop', function()
        {
            var sid = $(this).attr('name');
            var setPoint = $( '.tsp'+sid ).slider( 'option', 'value' );
            setPoint = unit === '°C' ? (Number(setPoint).toFixed(1)) : (Number(setPoint*9/5+32).toFixed(0));
     
            $('#tempsetpoint'+sid).html(setPoint+unit);
            $.post(scr+'?do=udp&func=12&to='+sid+'&val=0&valfloat='+setPoint+'&date=0', function(data)
            {
                // Recuperation des donnees dans la variable Reponse[]
                var Response = data.split('|');
                // Si valide on poursuit | Reponse[0]  
                if ( (Response[0] === 'replyUDPtrue') && (Response[1] === 'func=12&to='+sid) )
                {
                  $( '.temp1'+sid ).hide();
                  $( '.temp2'+sid ).show(); setTimeout( function(){ $( '.temp2'+sid ).fadeOut('slow'); }, 10000 );
                  $( '.temp3'+sid ).hide();
                }
                else if ( (Response[0] === 'replyUDPerror') && (Response[1] === 'func=12&to='+sid) )
                {
                  $( '.temp1'+sid ).hide();
                  $( '.temp2'+sid ).hide();
                  $( '.temp3'+sid ).show();
                }
            }); 
        });
    Merci d'avance!

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var st = unit === '°C' ? 0.5 : 1;
     
        $( '.tempsetpoint' ).slider({range: 0}, { max: mx },{ value: 0 },{step : st});

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Oui, j'ai bien vu qu'il y avait un lien, mais comment dois-je modifier cela pour que cela fonctionne correctement?

    Ce qui te parait évident ne l'ai pas pour moi...

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Si je veux un résultat à n près, j'adopte un intervalle égal à n/2.

    Plus l'intervalle est faible, plus le slider doit être long. Je conseille, au minimum, une longueur de 2 pixels par intervalle.

    Soit pour un slider allant de 0 à 100, avec un intervalle de 1, une longueur minimum de 200 pixels.

    Il faut aussi se rappeler qu'un slider n'est pas un outil précis, si l'on veut que l'utilisateur sélectionne une valeur exacte avec un pas faible, il faut utiliser un input de type number.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Merci pour ta réponse.

    Mon problème n'est pas lié au pixel, (pour avoir tester), si on regarde bien mon code:

    Je fais une lecture permanente de la valeur du slider avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $( '.tempsetpoint' ).bind( 'slide', function() 
    $('#tempsetpoint'+sid).html(setPoint+unit);
    et j'affiche à la fois la valeur après avoir relaché le slider:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Nouvelles consignes des sondes de temperature 'sliders'
    $( '.tempsetpoint' ).bind( 'slidestop', function()
    $('#tempsetpoint'+sid).html(setPoint+unit);
    $.post(scr+'?do=udp&func=12&to='+sid+'&val=0&valfloat='+setPoint+'&date=0')
    J'en suis persuadé que ce que je veux faire est faisable et que ce la est juste lié à la mauvaise utilisation des sliders.
    J'utilise le slidestop pour ne pas envoyé mon poste en permanence lorsque je bouge mon curseur.

    Merci.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Solution trouvé!

    Je poste mon code pour celui qui pourrait être intéressé...

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
        // Consignes des sondes de temperature 'sliders'
        var max = unit === '°C' ? 40 : 104;
        var step = unit === '°C' ? 0.5 : 1;
     
        $( '.tempsetpoint' ).slider(
        {
            min: 0, min: 0, max: max , step : step, animate: 'slow',
            slide: function (event, ui)
            {
                var sid = $(this).attr('name');
                var setPoint = ui.value
                setPoint = unit === '°C' ? (Number(setPoint).toFixed(1)) : (Number(setPoint*9/5+32).toFixed(0));
                //Show value
                $('#tempsetpoint'+sid).html(setPoint+unit);
                $( '.temp1'+sid ).show();
                $( '.temp2'+sid ).hide();
                $( '.temp3'+sid ).hide();
            },
            // Nouvelles consignes des sondes de temperature 'sliders'
            stop: function (event, ui)
            {
                var sid = $(this).attr('name');
                var setPoint = $( '.tsp'+sid ).slider('value');
                setPoint = unit === '°C' ? (Number(setPoint).toFixed(1)) : (Number(setPoint*9/5+32).toFixed(0));
     
                $('#tempsetpoint'+sid).html(setPoint+unit);
                $.post(scr+'?do=udp&func=12&to='+sid+'&val=0&valfloat='+setPoint+'&date=0', function(data)
                {
                    // Recuperation des donnees dans la variable Reponse[]
                    var Response = data.split('|');
                    // Si valide on poursuit | Reponse[0]  
                    if ( (Response[0] === 'replyUDPtrue') && (Response[1] === 'func=12&to='+sid) )
                    {
                        $( '.temp1'+sid ).hide();
                        $( '.temp2'+sid ).show(); setTimeout( function(){ $( '.temp2'+sid ).fadeOut('slow'); }, 10000 );
                        $( '.temp3'+sid ).hide();
                    }
                    else if ( (Response[0] === 'replyUDPerror') && (Response[1] === 'func=12&to='+sid) )
                    {
                        $( '.temp1'+sid ).hide();
                        $( '.temp2'+sid ).hide();
                        $( '.temp3'+sid ).show();
                    }
                }); 
            }
        });
    Bien programmé le slider peut être un outil précis!

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

Discussions similaires

  1. [WinForms]Améliorer le design des appli windows ?
    Par annalady dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 29/11/2005, 14h19
  2. Fonctionnement des attributions de droits sur table et bdd ?
    Par shako95 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/11/2005, 13h39
  3. Fonctionnement des WeakHashMap
    Par seiryujay dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 03/10/2005, 14h12
  4. Fonctionnement des fichiers.
    Par phoenix440 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 29/05/2005, 15h36
  5. [langage] fonctionnement des Processus
    Par GMI3 dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2003, 11h12

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