【发布时间】:2018-02-26 16:30:57
【问题描述】:
我有代码创建动态滑块供用户选择频率(从 118.000 Mhz 到 136.975 Mhz)。此列表是动态的,因此用户可以添加或删除频率(及其滑块)。但是我有两个问题:
步骤不工作。它适用于“15”或更高,但低于此值,step 不起作用。如果我使用“10”,步数变为 20。如果我选择 5 作为步数(这是我需要的值),则相同。
-
我无法使键盘输入起作用!我可以使用静态代码(例如:静态 div、值等),但不能使用此动态代码。此外,键盘输入存在两个问题。
- 它总是移动列表的最后一项(可能是因为“我”,这在事件中不存在......但我不知道如何解决/修复它)。
- 该值始终滑动到滑块的最大值或最小值。如果我键入
->,则滑块将移动到最大值。如果我输入<-然后滑块移动到最小值。
有什么建议吗?
var freqs = ["118000", "119550", "121725"];
for (var i = 0; i < freqs.length; i++) {
var $last = $('#freq_table').find('tbody').append("<tr><td class='col-md-2' id='value_freq_" + i + "'>oi</td><td class='col-md-8 center slider' id='td_slider_" + i + "'><div id='slider_" + i + "'></div></td></tr>");
var tmp = noUiSlider.create($('#slider_' + i).get(0), {
start: freqs[i],
step: 10,
range: {
'min': 118000,
'max': 136975
},
format: wNumb({
decimals: 3,
thousand: '.'
}),
}).on('update', function(values, handle) {
var id = this.target.id.slice(-1);
$('#value_freq_' + id).html(values[handle] + ' Mhz');
freqs[id] = values[handle];
});
var item = $('#slider_' + i).get(0);
var handle = item.querySelector('.noUi-handle');
handle.addEventListener('keydown', function(e) {
var value = Number(item.noUiSlider.get());
if (e.which === 37) {
item.noUiSlider.set(value - 10);
}
if (e.which === 39) {
item.noUiSlider.set(value + 10);
}
});
};
【问题讨论】:
标签: javascript jquery nouislider