2010-01-20 9 views
5

Ich habe einen jQuery-Schieberegler initialisiert und dann dynamisch Max-Werte abhängig von den Inhalten einer JSON-Anfrage festgelegt. Schritte av gerade 100, Minute ein Maximum werden zu sogar hundert neu berechnet, meistens zwischen 300 und 4800.jQuery Slider-Problem erreicht Min- und Max-Werte

Die Schiebereglerwerte und -einstellungen sind in Ordnung, aber wenn ich den Handgriff verschiebe, kann ich es nicht alle bekommen Ausweg bis zum Ende, es stoppt ein paar Schritte von Min/Max-Werten. Warum das?

Ich habe alle möglichen Dinge ausprobiert, nichts funktioniert. Am Ende habe ich 200 addiert und 200 subtrahiert und kompensiert, aber das ist ein Hack und keine Lösung.

+0

Hat der Griff das Maximum in der Position erreicht, aber der gemeldete Wert ist nicht maximal (im Gegensatz zum Griff, der nicht einmal zum Ende gebracht werden kann)? Und ist es schlimmer, wenn Sie schnell rutschen? Ich versuche nur festzustellen, ob das das gleiche Problem ist, das ich habe. Noch keine Lösung ... aber ich werde es euch wissen lassen. – Ben

Antwort

6

In Ihrem "Slide" -Rückruf versuchen Sie, den Wert mit ui.value zu ermitteln. Das hat mein Problem gelöst. Siehe jQuery UI slider - can't slide to 0 außer gehen Sie nicht durch die Antwort, gehen Sie durch den Kommentar zu der Antwort.

0

Ich weiß, dass diese Frage 5 Jahre alt ist, aber ich bin gerade auf ein ähnliches Problem gestoßen. Ich hatte einen kurzen Slider mit vielen Schritten, er ging von 0 auf 1 mit Schritten von 0,01. Der Schieberegler würde gegen die Enden des Schiebers stoßen, bevor er die äußersten Stufen erreicht, also konnte ich nur auf 0,02 und bis zu 0,98 gehen.

Wenn jemand auf dieses Problem stößt, besteht eine schnelle Lösung darin, einfach die Min- und Max-Werte etwas weiter zu verschieben und den Wert anzupassen, wenn der Benutzer an ihnen vorbei gleitet.

('.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

Ich hatte ein ähnliches Problem mit diesen Einstellungen

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

und der Schieber ging nur bis 149.999,74. In meinem Fall war das Problem natürlich, dass bei einem Schritt 1 und einem Bereich, der sich nicht gleichmäßig auf diese Schritte verteilt, einer der Endwerte niemals mit einem Schieberegler erreicht werden kann.

Changed die min bis 35000 (Math.floor()) und alles hat funktioniert wie ein Charme.