步长变化
step size change
我正在使用 Andre Ruffert 的优秀 rangeslider.js
我有一个问题。
我设置了滑块,因此当我像这样移动滑块时,我的数字以 6 为增量增加:6,12,18,24,30,36,42,48,54,60
但是我希望滑块在达到 36 时以 12 为增量增加,从而跳过“42”和“54”,这样当我移动滑块时,它可以被拉到以下位置:6,12, 18,24,30,36,48,60
有没有办法在 js 或 html 中做到这一点?
这是应该设置滑块值的代码,但由于某些原因它不起作用:
$(function() {
var valMap = [6, 12, 18, 24, 36, 48, 60];
$("#term").rangeslider({
min: 6,
max: valMap.length - 1,
value: 24,
slide: function(event, ui) {
$("#amount").val(valMap[ui.value]);
}
});
我无法使用 JavaScript 函数覆盖滑块的 HTML 代码,如下所示:
<input type="range" name="term" min="6" max="60" step="6" value="36" data-rangeslider>
您可以检查 onSlide
事件的值,并在滑块达到 36 时更改 属性 的步长:
var $r = $('input[type=range]');
onSlide: function(position, value) {
if (v>=36) {
$r.data().plugin_rangeslider.step = 12;
}
else {
$r.data().plugin_rangeslider.step = 6;
}
}
编辑:
值:最小值、最大值和应作为属性放在 html 元素上的值,而不是在初始化时。也没有 slide
功能。
看这个例子(codepen)
$("#term").rangeslider({
polyfill: false,
onInit: function() {
$ruler[0].innerHTML = getRulerRange(this.min, this.max, rulerStep);
this.$range.prepend($ruler);},
onSlide: function(p,v) {
if (!$("#term").data().plugin_rangeslider)
return;
if (v>=36) {
$("#term").data().plugin_rangeslider.step = 12;
}
else {
$("#term").data().plugin_rangeslider.step = 6;
}
},
onSlideEnd: function(p, v) {
$('#val').attr('value', v)
}
});
使用较新版本的 rangeslider.js,您可以根据已接受的答案:
var $r = $('input[type=range]');
onSlide: function(position, value) {
if (v >= 36) {
this.step = 12;
}
else {
this.step = 6;
}
}
我正在使用 Andre Ruffert 的优秀 rangeslider.js
我有一个问题。 我设置了滑块,因此当我像这样移动滑块时,我的数字以 6 为增量增加:6,12,18,24,30,36,42,48,54,60
但是我希望滑块在达到 36 时以 12 为增量增加,从而跳过“42”和“54”,这样当我移动滑块时,它可以被拉到以下位置:6,12, 18,24,30,36,48,60
有没有办法在 js 或 html 中做到这一点?
这是应该设置滑块值的代码,但由于某些原因它不起作用:
$(function() {
var valMap = [6, 12, 18, 24, 36, 48, 60];
$("#term").rangeslider({
min: 6,
max: valMap.length - 1,
value: 24,
slide: function(event, ui) {
$("#amount").val(valMap[ui.value]);
}
});
我无法使用 JavaScript 函数覆盖滑块的 HTML 代码,如下所示:
<input type="range" name="term" min="6" max="60" step="6" value="36" data-rangeslider>
您可以检查 onSlide
事件的值,并在滑块达到 36 时更改 属性 的步长:
var $r = $('input[type=range]');
onSlide: function(position, value) {
if (v>=36) {
$r.data().plugin_rangeslider.step = 12;
}
else {
$r.data().plugin_rangeslider.step = 6;
}
}
编辑:
值:最小值、最大值和应作为属性放在 html 元素上的值,而不是在初始化时。也没有 slide
功能。
看这个例子(codepen)
$("#term").rangeslider({
polyfill: false,
onInit: function() {
$ruler[0].innerHTML = getRulerRange(this.min, this.max, rulerStep);
this.$range.prepend($ruler);},
onSlide: function(p,v) {
if (!$("#term").data().plugin_rangeslider)
return;
if (v>=36) {
$("#term").data().plugin_rangeslider.step = 12;
}
else {
$("#term").data().plugin_rangeslider.step = 6;
}
},
onSlideEnd: function(p, v) {
$('#val').attr('value', v)
}
});
使用较新版本的 rangeslider.js,您可以根据已接受的答案:
var $r = $('input[type=range]');
onSlide: function(position, value) {
if (v >= 36) {
this.step = 12;
}
else {
this.step = 6;
}
}