Tar*_*kov 10 javascript jquery jquery-ui logarithm slider
我正在使用这个jQuery UI代码用于对数滑块:
var minVal = 10;
var maxVal = 100;
$("#slider").slider({
range: true,
min: minVal,
max: maxVal / 2,
values: [minVal, maxVal],
slide: function(event, ui) {
$("#amount_min").val(Number(expon(ui.values[0], minVal, maxVal)).toFixed(0));
$("#amount_max").val(Number(expon(ui.values[1], minVal, maxVal)).toFixed(0));
}
});
Run Code Online (Sandbox Code Playgroud)
该expon功能是:
function expon(val, min,max) {
var minv = Math.log(min);
var maxv = Math.log(max);
max = max / 2;
// calculate adjustment factor
var scale = (maxv - minv) / (max - min);
return Math.exp(minv + scale * (val - min));
}
Run Code Online (Sandbox Code Playgroud)
#amount_min并且#amount_max是HTML输入元素.上面的代码可以很好地从滑块获取值并将它们放到输入元素中.
但是现在我需要与...相反的功能expon()- 当我改变输入的值时改变滑块.任何人都可以帮我吗?
nes*_*-EE 11
我在这里找到了解决方案:对数滑块
我已经将您非常有用的代码用于项目...这就是我所拥有的:
var gMinPrice = 100;
var gMaxPrice = 1000; //in my project these are dynamic
function expon(val){
var minv = Math.log(gMinPrice);
var maxv = Math.log(gMaxPrice);
var scale = (maxv-minv) / (gMaxPrice-gMinPrice);
return Math.exp(minv + scale*(val-gMinPrice));
}
function logposition(val){
var minv = Math.log(gMinPrice);
var maxv = Math.log(gMaxPrice);
var scale = (maxv-minv) / (gMaxPrice-gMinPrice);
return (Math.log(val)-minv) / scale + gMinPrice;
}
Run Code Online (Sandbox Code Playgroud)
然后我使用以下代码更改我的滑块位置:
var gBudgetBottom, gBudgetTop;
$('#priceSlider').slider({
change: function(event, ui){ // inside your slider instance
gBudgetBottom = Number(expon(ui.values[0])).toFixed(0);
gBudgetTop = Number(expon(ui.values[1])).toFixed(0);
}
}
$('#priceSlider').slider({ values: [Number(logposition(gBudgetBottom)).toFixed(0), Number(logposition(gBudgetTop)).toFixed(0)] });
Run Code Online (Sandbox Code Playgroud)
我希望对你有用:)
| 归档时间: |
|
| 查看次数: |
11273 次 |
| 最近记录: |