使用 seiyria 的 bootstrap-slider 根据输入值调整范围
Adjust range depending on input value using bootstrap-slider by seiyria
我的目标是用户可以通过输入字段或滑块以两种方式调整 Belopp。后者正在运行,所以还有一个问题没有解决。
我希望我的滑块根据在输入字段中输入的值进行调整
在屏幕截图中,Belopp 的值为 40。但范围滑块仍在中间。不正确,因为输入的值是 40,所以应该在最左边。
我的HTML:
<div class="col-12 mx-auto ">
<div class="slider-wrapper slider-ghost">
<input class="input-range"
id='priceSlider'
type="text"
data-slider-min="40"
data-slider-tooltip="hide"
data-slider-max="120"
data-slider-step="1"
data-slider-value=""
/>
</div>
</div>
和我的 JS,我已经将滑块的值分配给 newBeloppValue 但范围滑块不会移动。
$(document).ready(function () {
$("#belopp").change(function () {
let newBeloppValue = parseFloat($("#belopp").val());
if ($("#belopp").val().length > 0) {
// belopp value should not be lower or higher than the minmax range
if (newBeloppValue < minValue || newBeloppValue > maxValue) {
console.log("error");
} else {
//value of slider should get the input value
$("#priceSlider").slider({
value: newBeloppValue,
});
}
}
});
$("#priceSlider").slider();
$("#priceSlider").on("slide", function (slideEvt) {
// slider value will be displayed on the belopp input
$("#belopp").val(slideEvt.value);
});
});
})
我在这里错过了什么?
您需要从滑块获取 min & max 值,以比较输入的值是否在范围内,以及在你的滑块中设置这个值你可以使用 $("#priceSlider").slider('setValue', newBeloppValue);
演示代码 :
$(document).ready(function() {
$("#belopp").keyup(function() {
//get min & max values from slider
let minValue = $("#priceSlider").data('slider-min')
let maxValue = $("#priceSlider").data('slider-max')
console.log(minValue + " " + maxValue)
let newBeloppValue = parseInt($("#belopp").val());
if ($("#belopp").val().length > 0) {
if (newBeloppValue < minValue || newBeloppValue > maxValue) {
console.log("error");
} else {
//set same inside slider
$("#priceSlider").slider('setValue', newBeloppValue);
}
}
});
$("#priceSlider").slider();
$("#priceSlider").on("slide", function(slideEvt) {
// slider value will be displayed on the belopp input
$("#belopp").val(slideEvt.value);
});
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/11.0.2/css/bootstrap-slider.css" integrity="sha512-SZgE3m1he0aEF3tIxxnz/3mXu/u/wlMNxQSnE0Cni9j/O8Gs+TjM9tm1NX34nRQ7GiLwUEzwuE3Wv2FLz2667w==" crossorigin="anonymous" />
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js'></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/11.0.2/bootstrap-slider.min.js" integrity="sha512-f0VlzJbcEB6KiW8ZVtL+5HWPDyW1+nJEjguZ5IVnSQkvZbwBt2RfCBY0CBO1PsMAqxxrG4Di6TfsCPP3ZRwKpA==" crossorigin="anonymous"></script>
<div class="col-12 mx-auto ">
<div class="slider-wrapper slider-ghost">
<input class="input-range" id='priceSlider' type="text" data-slider-min="40" data-slider-tooltip="hide" data-slider-max="120" data-slider-step="1" data-slider-value="40" />
</div>
</div>
<input type="text" id="belopp">
我的目标是用户可以通过输入字段或滑块以两种方式调整 Belopp。后者正在运行,所以还有一个问题没有解决。
我希望我的滑块根据在输入字段中输入的值进行调整
在屏幕截图中,Belopp 的值为 40。但范围滑块仍在中间。不正确,因为输入的值是 40,所以应该在最左边。
我的HTML:
<div class="col-12 mx-auto ">
<div class="slider-wrapper slider-ghost">
<input class="input-range"
id='priceSlider'
type="text"
data-slider-min="40"
data-slider-tooltip="hide"
data-slider-max="120"
data-slider-step="1"
data-slider-value=""
/>
</div>
</div>
和我的 JS,我已经将滑块的值分配给 newBeloppValue 但范围滑块不会移动。
$(document).ready(function () {
$("#belopp").change(function () {
let newBeloppValue = parseFloat($("#belopp").val());
if ($("#belopp").val().length > 0) {
// belopp value should not be lower or higher than the minmax range
if (newBeloppValue < minValue || newBeloppValue > maxValue) {
console.log("error");
} else {
//value of slider should get the input value
$("#priceSlider").slider({
value: newBeloppValue,
});
}
}
});
$("#priceSlider").slider();
$("#priceSlider").on("slide", function (slideEvt) {
// slider value will be displayed on the belopp input
$("#belopp").val(slideEvt.value);
});
}); })
我在这里错过了什么?
您需要从滑块获取 min & max 值,以比较输入的值是否在范围内,以及在你的滑块中设置这个值你可以使用 $("#priceSlider").slider('setValue', newBeloppValue);
演示代码 :
$(document).ready(function() {
$("#belopp").keyup(function() {
//get min & max values from slider
let minValue = $("#priceSlider").data('slider-min')
let maxValue = $("#priceSlider").data('slider-max')
console.log(minValue + " " + maxValue)
let newBeloppValue = parseInt($("#belopp").val());
if ($("#belopp").val().length > 0) {
if (newBeloppValue < minValue || newBeloppValue > maxValue) {
console.log("error");
} else {
//set same inside slider
$("#priceSlider").slider('setValue', newBeloppValue);
}
}
});
$("#priceSlider").slider();
$("#priceSlider").on("slide", function(slideEvt) {
// slider value will be displayed on the belopp input
$("#belopp").val(slideEvt.value);
});
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/11.0.2/css/bootstrap-slider.css" integrity="sha512-SZgE3m1he0aEF3tIxxnz/3mXu/u/wlMNxQSnE0Cni9j/O8Gs+TjM9tm1NX34nRQ7GiLwUEzwuE3Wv2FLz2667w==" crossorigin="anonymous" />
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js'></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/11.0.2/bootstrap-slider.min.js" integrity="sha512-f0VlzJbcEB6KiW8ZVtL+5HWPDyW1+nJEjguZ5IVnSQkvZbwBt2RfCBY0CBO1PsMAqxxrG4Di6TfsCPP3ZRwKpA==" crossorigin="anonymous"></script>
<div class="col-12 mx-auto ">
<div class="slider-wrapper slider-ghost">
<input class="input-range" id='priceSlider' type="text" data-slider-min="40" data-slider-tooltip="hide" data-slider-max="120" data-slider-step="1" data-slider-value="40" />
</div>
</div>
<input type="text" id="belopp">