Как объеденить круговой слайдер(диапозон) с полем ввода и кнопками + и -?
Здравствуйте, есть скрипт кругового слайдера, оф разрабы тут - https://roundsliderui.com . Но немогу его не как соеденить с отдельным полем ввода цифр и кнопка + и -. Тоесть мне нужно чтобы при наборе в поле цифры, оно менялось и на слайдере (соответственно ползунок должен перемешаться к нужному значению) Так же и при нажатие на кнопки +1 и -1, чтобы число менялось и в поле ввода и в слайдере. Как должно быть:

Пример моего кода:
$("#slider2").roundSlider({ sliderType: "min-range", circleShape: "pie", startAngle: "135", lineCap: "round", radius: 150, width: 20, value: 5, tooltipFormat: "tooltipVal2", min: 5, max: 60, svgMode: true, pathColor: "#eee", borderWidth: 0, startValue: 5, valueChange: function (e) { var color = e.isInvertedRange ? "#FF5722" : "#8BC34A"; $("#slider2").roundSlider({ "rangeColor": color, "tooltipColor": color }); }, drag:function(args) { $('#slider-result').html(args.value + " мин") $('#sss').html(args.value) if (args.value === 10) { $('#slider-result').html(args.value + " 10") } $(document).ready(function() { $('.minus').click(function () { var $input = $(this).parent().find('input'); var count = parseInt($input.val()) - 1; count = count < 1 ? 1 : count; $input.val(count); $input.change( ); $input.val = args.value; return false; }); $('.plus').click(function () { var $input = $(this).parent().find('input'); $input.val(parseInt($input.val()) + 1); $input.change(); $input.val = args.value; return false; }); }) } }); function tooltipVal2(args) { return args.value + " мин"; } document.onmousemove = function(e) { if ($("#slider2").roundSlider("option", "value") === 10 && $("#slider1").roundSlider("option", "value") === 10) { $('#slider-result1').html('Borri') }} var sliderObj = $("#slider2").data("roundSlider"); sliderObj.setValue(5); |
$("#slider2").roundSlider({ sliderType: "min-range", circleShape: "pie", startAngle: "135", lineCap: "round", radius: 150, width: 20, value: 5, tooltipFormat: "tooltipVal2", min: 5, max: 60, svgMode: true, pathColor: "#eee", borderWidth: 0, startValue: 5, valueChange: function (e) { var color = e.isInvertedRange ? "#FF5722" : "#8BC34A"; $("#slider2").roundSlider({ "rangeColor": color, "tooltipColor": color }); }, drag:function(args) { $('#slider-result').html(args.value + " мин") $('#sss').html(args.value) if (args.value === 10) { $('#slider-result').html(args.value + " 10") } $(document).ready(function() { $('.minus').click(function () { var $input = $(this).parent().find('input'); var count = parseInt($input.val()) - 1; count = count < 1 ? 1 : count; $input.val(count); $input.change( ); $input.val = args.value; return false; }); $('.plus').click(function () { var $input = $(this).parent().find('input'); $input.val(parseInt($input.val()) + 1); $input.change(); $input.val = args.value; return false; }); }) } }); function tooltipVal2(args) { return args.value + " мин"; } document.onmousemove = function(e) { if ($("#slider2").roundSlider("option", "value") === 10 && $("#slider1").roundSlider("option", "value") === 10) { $('#slider-result1').html('Borri') }} var sliderObj = $("#slider2").data("roundSlider"); sliderObj.setValue(5);
<script src="https://code.jquery.com/jquery-3.2.1.js"></script> <script src="https://cdn.jsdelivr.net/jquery.roundslider/1.0/roundslider.min.js"></script> <div id="slider2"></div> <div id="slider-result"></div> <div class="number"> <span class="minus">-</span> <input type="text" value="1" size="5"/> <span class="plus">+</span> </div> |
<script src="https://code.jquery.com/jquery-3.2.1.js"></script> <script src="https://cdn.jsdelivr.net/jquery.roundslider/1.0/roundslider.min.js"></script> <div id="slider2"></div> <div id="slider-result"></div> <div class="number"> <span class="minus">-</span> <input type="text" value="1" size="5"/> <span class="plus">+</span> </div>
@import url('https://cdn.jsdelivr.net/jquery.roundslider/1.0/roundslider.min.css'); #slider2 .rs-handle { background-color: #f3f3f3; box-shadow: 0px 0px 4px 0px #000; } #slider2 .rs-tooltip-text { font-size: 25px; font-weight: bold; } .rs-tooltip.hover,.rs-tooltip.edit:hover { border: 1px solid #aaa; cursor: pointer; } .rs-handle.rs-move { cursor: grab; } .rs-range-color { background-color: #ff8d00; } .rs-handle:after { background-color: #000000; } .rs-border { border-color: #ff8d00; } |
@import url('https://cdn.jsdelivr.net/jquery.roundslider/1.0/roundslider.min.css'); #slider2 .rs-handle { background-color: #f3f3f3; box-shadow: 0px 0px 4px 0px #000; } #slider2 .rs-tooltip-text { font-size: 25px; font-weight: bold; } .rs-tooltip.hover,.rs-tooltip.edit:hover { border: 1px solid #aaa; cursor: pointer; } .rs-handle.rs-move { cursor: grab; } .rs-range-color { background-color: #ff8d00; } .rs-handle:after { background-color: #000000; } .rs-border { border-color: #ff8d00; }
Немного еще скажу про слайдер - у него есть параметр как drag:, в которую можно засунуть любую функцию, и она будет работать при изменении значения (value)
Дополнительно:
событие update (ну или drug, я в доку не вникал) слайдера - это источник значения при изменении его слайдером. Здесь получаем это значение и вписываем его в input
метод setValue наоборот устанавливает значение в слайдер
По событию onchange или oninput на поле ввода вы получаете введенное значение и методом setValue устанавливаете его в слайдер.
по кнопкам плюс/минус вы не трогаете слайдер. А устанавливаете значение в инпут и триггерите на инпуте событие onchange/oninput (по этому триггеру сработает обновление слайдера).
то есть у вас почти правильно. только вот эту дичь нужно убрать $input.val = args.value; вообще непонятно, что вы собирались этим сделать.
Добавить слушатель onchange на инпут
И немного поправить drug
- Спасибо за ответ, а можете помочь кодом?
1) Добавить слушатель onchange на инпут2) И немного поправить drug - тут я понимаю что надо как то прифигачить setValue, но как?
Извените если это глупые вопросы
- Axel030392, примерно так
$('селектор для инпута').on('change', function(e) { const sliderObj = $("#slider2").data("roundSlider"); sliderObj.setValue(e.target.value); // установить слайдер по значению из инпута }); drag:function(args) { $('селектор для инпута').val(args.value); // ... }
$('селектор для инпута').on('change', function(e) { const sliderObj = $("#slider2").data("roundSlider"); sliderObj.setValue(e.target.value); // установить слайдер по значению из инпута }); drag:function(args) { $('селектор для инпута').val(args.value); // ... }
Насчет args.value это я у вас подсмотрел, документацию не читал.
- Спасибо огромное, все отлично работает. Но можете еще подсказать, как поставить ограничители по вводу чисел. Тоесть например как у поля , только для input type="text" и кнопок
- А все понял, спасибо больше нет вопросов))
$(document).ready(function() { $('.number-minus').click(function () { var $input = $('#vremy-text'); var count = parseInt($input.val()) - 1; count = count < 5 ? 5 : count; $input.val(count); $input.change( ); return false; }); $('.number-plus').click(function () { var $input = $('#vremy-text'); var count = parseInt($input.val()) + 1; count = count > 60 ? 60 : count; $input.val(count); $input.change(); return false; }); })
$(document).ready(function() { $('.number-minus').click(function () { var $input = $('#vremy-text'); var count = parseInt($input.val()) - 1; count = count < 5 ? 5 : count; $input.val(count); $input.change( ); return false; }); $('.number-plus').click(function () { var $input = $('#vremy-text'); var count = parseInt($input.val()) + 1; count = count > 60 ? 60 : count; $input.val(count); $input.change(); return false; }); })
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для объединения кругового слайдера (диапазона) с полем ввода и кнопками + и - вам потребуется использовать JavaScript для управления значениями слайдера и поля ввода, а также для обработки нажатий на кнопки + и -.
Вот пример кода на JavaScript, который позволит вам реализовать такое поведение:
```html
.slider {
width: 200px;
height: 200px;
border-radius: 50%;
background: lightblue;
}
const slider = document.querySelector('.slider');
const inputField = document.getElementById('inputField');
const decreaseBtn = document.getElementById('decreaseBtn');
const increaseBtn = document.getElementById('increaseBtn');
let sliderValue = 50;
function updateSlider() {
slider.style.transform = `rotate(${sliderValue * 3.6}deg)`;
inputField.value = sliderValue;
}
function decreaseValue() {
if (sliderValue > 0) {
sliderValue--;
updateSlider();
}
}
function increaseValue() {
if (sliderValue < 100) {
sliderValue++;
updateSlider();
}
}
decreaseBtn.addEventListener('click', decreaseValue);
increaseBtn.addEventListener('click', increaseValue);
updateSlider();
```
В этом примере мы создали круговой слайдер с помощью элемента `
Вы можете настроить стилизацию слайдера и различные параметры в соответствии с вашими потребностями. Надеюсь, это поможет вам объединить круговой слайдер с полем ввода и кнопками +/- на вашем веб-сайте.