2010-01-20 5 views
5

J'ai un curseur jQuery initialisé, puis j'ai défini dynamiquement les valeurs min max sur le contenu d'une requête json. Les étapes av même 100, min a max sont recalculées à une centaine, la plupart du temps entre 300 et 4800.Problème du curseur jQuery atteignant les valeurs min et max

Les valeurs et les paramètres du curseur sont corrects, mais lorsque je déplace la poignée, je ne peux pas tout lire. loin aux extrémités, il s'arrête à quelques pas des valeurs min/max. Pourquoi donc? J'ai essayé toutes sortes de choses, rien ne fonctionne. J'ai fini par ajouter 200 à la valeur maximale et en soustrayant 200 à la plus basse et compenser, mais c'est un bidouillage et non une solution.

+0

Est-ce que la poignée a atteint le maximum en position, mais la valeur rapportée n'est pas au maximum (par opposition à la poignée ne pouvant même pas être amenée à la fin)? Et est-ce pire quand vous glissez rapidement? Juste essayer de déterminer si c'est le même problème que je vis. Pas encore de solution ... mais je vous le ferai savoir. – Ben

Répondre

6

Dans votre rappel 'slide', essayez d'utiliser ui.value pour obtenir la valeur. Cela a résolu mon problème. Voir jQuery UI slider - can't slide to 0 sauf ne va pas par la réponse, passez par le commentaire à la réponse.

0

Je réalise que cette question a 5 ans mais je viens de rencontrer un problème similaire aujourd'hui. J'ai eu un petit curseur avec beaucoup de pas, il est passé de 0 à 1 avec des pas de 0.01. La poignée du curseur heurterait les extrémités du curseur avant de frapper les étapes les plus externes, donc je pouvais seulement descendre à 0.02 et jusqu'à 0.98. Si quelqu'un rencontre ce problème, une solution rapide consiste simplement à faire aller un peu plus loin vos valeurs min et max et à ajuster votre valeur si l'utilisateur les glisse.

('.slider-container').slider({ 
       min: -0.02, max: 1.02, step: 0.01, slide: function() { 

        // make values below 0 and over 1 snap back 
        if ($(this).slider('value') < 0) { 
         $(this).slider('value', 0); 
        } 

        if ($(this).slider('value') > 1) { 
         $(this).slider('value', 1); 
        } 
}); 
0

J'ai eu un problème similaire avec ces paramètres

min: 35000.74 
max: 150000 
step: 1 //(default, did not actually change it) 

et le curseur ne est allé jusqu'à 149999,74. Bien sûr, dans mon cas, le problème était que, étant donné l'étape 1 et une plage qui ne se divise pas uniformément dans ces étapes, l'une des valeurs finales ne pourrait jamais être atteinte avec un curseur.

Modifié le min à 35000 (Math.floor()) et tout a fonctionné comme un charme.

Questions connexes