jQuery Mobile Slider Шаги не ведут себя, когда цифры большие

У меня есть ползунок от 1 до 5 миллионов, так или иначе, jquery mobile оптимизирует шаг до 50000 при использовании ползунка, несмотря на то, что я указал шаг до 1000. Есть ли способ принудительно переопределить это поведение?

<form>
    <label for="slider-1">Slider:</label>
    <input type="range" name="slider-1" id="slider-1" min="0" max="5000000" value="10"    step="10" />
</form>

демо здесь:

http://jsfiddle.net/LSGAk/3/

1 ответ

Решение

Если я не ошибаюсь, вы не можете переопределить его, если только вы не хотите изменить исходный код jQm.

Строка, являющаяся источником этого поведения, находится в функции refresh. Точнее следующий блок:

if ( typeof val === "object" ) {
    data = val;
    // a slight tolerance helped get to the ends of the slider
    tol = 8;
    left = this.slider.offset().left;
    width = this.slider.width();
    pxStep = width/((max-min)/step);
    if ( !this.dragging ||
        data.pageX < left - tol ||
        data.pageX > left + width + tol ) {
            return;
    }
    if ( pxStep > 1 ) {
        percent = ( ( data.pageX - left ) / width ) * 100;
    } else {
        percent = Math.round( ( ( data.pageX - left ) / width ) * 100 );
    }
}

В случае взаимодействия с мышью / касанием val - это объект, а в вашем случае pxStep уступает 1. Таким образом, мы запускаем раунд.

PS: Не совсем уверен в том, что я написал, он просто взглянул на код, но мне кажется, что он так себя ведет.

Другие вопросы по тегам