Javascript - 具有非线性刻度的负十进制输入范围
Javascript - negative decimal input range with non-linear scale
我有一个范围从 -1000 到 1000 的输入范围滑块。
<input type="range" min="-1000" max="1000" value="0" />
我希望步骤是非线性的(对数或exp),在较低的范围内具有更高的精度。
所以例如
-1000
-999.5
-998
-996
。
0
100
300
600
1000
并不完全需要如上所示,但我只是希望步骤在较低范围内更靠近,在较高范围内更远。寻找一些jQuery/JS代码来帮助我完成此操作。
谢谢!
你可以从上面的方法开始:
网页部分:
<input id='digits' type="range" min="-1000" max="1000" value="0" step="100" />
JS部分:
$("#digits").on("input change", function() {
var is_negative = this.step < 0;
this.step = (is_negative)? (Math.abs(this.step) / 1.025).toFixed(0) : Math.pow(Math.abs(this.step), 1.025).toFixed(0);
});
这不是一个正确的决定,这只是您的情况的正确方向
不能直接将step
设置为函数。但是你可以把它输出到某个div。例如:
<input id="range" name="range" type="range" min="-1000" max="1000" value="-1000" />
<output id="rangeOutput" for="range" name="level">-1000</output>
在onInput
事件中,step
是通过适当的函数计算的,在我的示例中 - 二次函数:
var stepFunction = function(step, min, max){
var range = max - min,
coeff = Math.pow((step - min)/range, 2),
newStep = min + coeff*range;
return newStep;
}
$('#range').on('input', function(e){
var target = e.target,
step = parseInt(target.value),
min = parseInt(target.min),
max = parseInt(target.max);
$('#rangeOutput').val(stepFunction(step, min, max));
});
斯菲德尔
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 如何使用javascript验证在表单输入中避免负值、浮点值和十进制值
- Javascript - 具有非线性刻度的负十进制输入范围
- 如何在javascript中输入十进制数
- HTML 正则表达式验证在十进制输入上仅限制一个句点
- 输入字段不保存十进制数并将其设置为 ,00
- javascript函数Math.pow从输入文本中获取十进制值
- AngularJS双向绑定输入到十进制数
- 如何使用 id 输入类型=“文本”JavaScript 中的值设置自动 2 个十进制数
- 如何十进制验证:限制仅输入两个数值
- 不允许输入字段中使用角度.js的十进制值
- html标记输入类型=“number”和基于区域性的十进制分隔符
- 如果结果十进制后面跟着一系列9,则获取四舍五入到整数值的输入
- 如何验证十进制值输入
- 对2个十进制输入进行双重jQuery验证,并获得更大的数字
- 允许html输入框只输入一个完整的数字和精确的十进制.5
- 如何使用jquery改变十进制的掩码输入格式
- HTML文本框对十进制输入的限制
- 新的webkit在数字类型输入中将十进制逗号转换为~ dot,反之亦然.该浏览器特性的Javascript名称
- Jquery regex允许十进制输入