Ответ 1
Вы можете сделать это с помощью слайдера jquery, подключившись к событию слайда (эффективно переопределив его)... Что-то вроде этого:
$(function() {
var values = [0, 10, 50, 60, 70, 80, 90, 91, 92, 93, 94, 95, 100];
var slider = $("#slider").slider({
slide: function(event, ui) {
var includeLeft = event.keyCode != $.ui.keyCode.RIGHT;
var includeRight = event.keyCode != $.ui.keyCode.LEFT;
slider.slider('option', 'value', findNearest(includeLeft, includeRight, ui.value));
return false;
}
});
function findNearest(includeLeft, includeRight, value) {
var nearest = null;
var diff = null;
for (var i = 0; i < values.length; i++) {
if ((includeLeft && values[i] <= value) || (includeRight && values[i] >= value)) {
var newDiff = Math.abs(value - values[i]);
if (diff == null || newDiff < diff) {
nearest = values[i];
diff = newDiff;
}
}
}
return nearest;
}
});
Должен работать для того, что вы описываете... Я тестировал его для перетаскивания мышью и используя клавиши "влево/вправо" / "домашний/конец" (очевидно, вам нужно будет изменить левый/правый вверх/вниз, если вы хотите вертикальный слайдер).
Некоторые примечания:
- Очевидно, что массив значений - это любые шаги, которые вы хотите для своих целей.
- Также очевидно, что в приведенном выше коде предполагается, что div с id "слайдера" будет работать.
- Вероятно, это будет работать странно, если ваши значения min/max не совпадают с вашими значениями min/max для слайдера (я бы предложил просто использовать "min: values [0]", max: values [values.length - 1 ] "как ваши параметры min/max на слайдере, а затем вы всегда должны быть в безопасности).
- Очевидно, что этот параметр не будет деградировать в раскрывающемся списке, но это будет очень просто сделать... просто сделайте свой выбор как обычный выпадающий список (состояние по умолчанию без javascript), а затем используйте jquery, чтобы скрыть раскрывающийся список, а также создать массив значений на основе параметров. Затем вы можете просто обновить раскрывающийся список (скрытый) одновременно с обновлением ползунка в коде выше, так что, когда ваши сообщения в форме будут выбраны, в выпадающем списке будет выбрано правильное значение.
Надеюсь, что это поможет.