jquery-ui slider(): как получить всегда одинаковое значение между дескрипторами

Создайте самодельный слайдер: http://jsfiddle.net/wyc3P/4/ Что он делает : принимает минимальные и максимальные значения в секундах и преобразует их в формат минуты:секунды во время слайда.

Цель состоит в том, чтобы установить максимальное значение между дескрипторами ровно 40 секунд.

Я думал, что это работает нормально, пока я не переместил правую ручку, чтобы соответствовать 1:00 - 1:40, но вместо этого он показывал 1:00 - 1:41. Однако, если вы затем переместите левую ручку до упора влево, она правильно покажет 0:00 - 0:40.

Пожалуйста, помогите исправить ошибки кодирования. знак равно


person Alex G    schedule 01.04.2012    source источник
comment
Вы имеете в виду, что максимальное значение между дескрипторами составляет ровно 40 секунд?   -  person pjumble    schedule 01.04.2012
comment
@pjumble: да, извините, исправлено.   -  person Alex G    schedule 01.04.2012


Ответы (1)


Ползунки на самом деле остаются на расстоянии 40 друг от друга (максимум), проблема заключается в том, что ваши вычисления минут/секунд ниже используют исходные значения ui, переданные в функцию, даже если вы установили новое значение:

slide: function(event, ui) {
    if ((ui.values[1]-ui.values[0]) > 40) {
        var index = $(ui.handle).index();
        if (index === 1) {
            // You're setting a new slider position here, but ui.values[1] still contains the old position
            $('#slider').slider('values', 1, ui.values[0]+40);
        } else if (index === 2) {
            $('#slider').slider('values', 0, ui.values[1]-40);
        }
    }

    // your calculations use the original ui values
}

Вам также нужно будет обновить ui.values:

    if ((ui.values[1]-ui.values[0]) > 40) {
        var index = $(ui.handle).index();
        if (index === 1) {
            ui.values[1] = ui.values[0] + 40;
            $('#slider').slider('values', 1, ui.values[1]);
        } else if (index === 2) {
            ui.values[0] = ui.values[1] - 40;
            $('#slider').slider('values', 0, ui.values[0]);
        }
    }

http://jsfiddle.net/wyc3P/8/

person pjumble    schedule 01.04.2012
comment
Конечно вещь. Я предполагаю, что это проблема погоды. знак равно - person Alex G; 01.04.2012