Проблема с ползунком jQuery, достигающая минимального и максимального значений
У меня инициализирован слайдер jQuery, а затем динамически устанавливаются минимальные максимальные значения, попадающие в содержимое json-запроса. Шаги av даже 100, min a max пересчитываются до четных сотен, в большинстве случаев где-то между 300 и 4800.
Значения и настройки ползунка в порядке, но когда я перемещаю ручку, я не могу получить ее до конца, она останавливается в нескольких шагах от минимальных / максимальных значений. Это почему?
Я пробовал все виды вещей, ничего не работает. В итоге я добавил 200 в верхнем значении и вычел 200 в нижнем и для компенсации, но это взлом, а не решение.
3 ответа
В обратном вызове слайда попробуйте использовать значение ui.value для получения значения. Это решило мою проблему. См. Слайдер jQuery UI - не может скользить к 0, кроме как идти без ответа, перейти от комментария к ответу.
У меня была похожая проблема с этими настройками
min: 35000.74
max: 150000
step: 1 //(default, did not actually change it)
и ползунок пошел только до 149999,74. Конечно, в моем случае проблема заключалась в том, что с учетом шага 1 и диапазона, который не делится равномерно на эти шаги, одно из конечных значений никогда не могло быть достигнуто с помощью ползунка.
Изменил мин, чтобы быть 35000 (Math.floor()), и все работало как шарм.
Я понимаю, что этому вопросу 5 лет, но я только что столкнулся с подобной проблемой сегодня. У меня был короткий слайдер с множеством шагов, он пошел от 0 до 1 с шагом 0,01. Ручка ползунка столкнется с концами ползунка перед тем, как ударить по самым дальним ступеням, поэтому я смог опуститься только до 0,02 и до 0,98.
Если кто-то сталкивается с этой проблемой, быстрый обходной путь - просто заставить ваши минимальные и максимальные значения пойти немного дальше, чем они должны, и скорректировать ваше значение, если пользователь проскользнет мимо них.
('.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);
}
});