Вы можете установить отрицательное значение start
, но поведение непредсказуемо, когда вы делаете это. Если вы хотите использовать отрицательные значения, вам понадобится логика для обновления значения в #sliderVolOutput
после перемещения дескриптора.
Событие moved.zf.slider
запускается каждый раз при перемещении дескриптора, и вы можете использовать этот факт для обновления значения текстового поля. Это событие запускается несколько раз, поэтому вам нужно добавить дополнительный код, чтобы избавиться от мерцания (если это надоедает).
Я предоставил базовый код, который должен вас начать. Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать.
var target = document.getElementById("slidervol");
var options = {
"start": 0,
"end": 100,
"decimal": 0
};
var elem = new Foundation.Slider($(target), options);
var offset = 50;
$(target).on('moved.zf.slider', function() {
$('#sliderVolOutput').val(Number($('.slider-handle').attr('aria-valuenow')) - offset);
});
Другой подход будет использовать mousemove.zf.slider
событие. Это позволяет избавиться от мерцания, но значение текстового поля обновляется только вы перестали манипулировать бегунок:
$(target).on('mousemove.zf.slider', function() {
$('#sliderVolOutput').val(Number($('.slider-handle').attr('aria-valuenow')) - offset);
});
UPDATE:
В ответ на ваш дополнительный запрос, I» ve успел реализовать требуемую функциональность (редактирование значения в текстовом поле, в результате чего ползунок обновляется) с помощью скрытого элемента управления.
slider-handle
теперь нацелен на скрытый элемент управления (aria-controls
), который всегда будет содержать положительное значение. Текстовое поле будет содержать отрицательное (вычисленное) значение. Это то, что обновленный HTML выглядит для slider-handle
:
<span class="slider-handle" data-slider-handle role="slider" tabindex="1" aria-controls="sliderVolOutputHidden"></span>
И это дополнительный скрытый вход Я использовал:
<input type="hidden" id="sliderVolOutputHidden" value="0">
Я также добавил input
событие для #sliderVolOutput
, что обновления значение скрытого input
и запускает событие change
. change
событие имеет важное значение, так как без него, ручка не будет обновляться:
$('#sliderVolOutput').on('input', function() {
$('#sliderVolOutputHidden').val(Number($('#sliderVolOutput').val()) + offset);
$('#sliderVolOutputHidden').trigger('change');
});
Fiddle Demo
Я использовал ваши примеры, чтобы попытаться исправить файл foundation.js, но есть еще какая-то работа делать. – peregrinus
Для ввода ввода текстового поля потребуется больше работы. У меня еще не было времени изучить этот вопрос, но как только я это сделаю, я вернусь к вам. – Yass
@peregrinus У меня, наконец, было время посмотреть на вашу проблему. См. Мой обновленный пост. Скрипка также была обновлена. Если у вас возникнут вопросы, я буду рад ответить на них. – Yass