我正在使用noUISlider来允许用户输入数字。它工作正常,但现在我想添加一个输入,以便能够更新nouislider的值而不拖动它。但有些我怎么也做不到。以下是我的代码的外观:
<div class="col-sm-1">
<input type="number" min="1" max="24" step="1" class="form-control input-sm" name="pointstopredicts" id="pointstopredicts" value="10" required="true" />
</div>
<div class="col-sm-9">
<div id="rangesliderPP"></div>
</div>
以下是我的JS代码:
<script>
var skipSlider3 = document.getElementById('rangesliderPP');
var pointstopredicts = document.getElementById('pointstopredicts');
noUiSlider.create(skipSlider3, {
start: [ 6 ],
connect: 'lower',
range: {
'min': 1,
'max': 24
}
});
skipSlider3.noUiSlider.on('update', function( values, handle ) {
var value = values[handle];
pointstopredicts.value = Math.round(value);
});
pointstopredicts.addEventListener('change', function(){
skipSlider3.noUiSlider.set([null, this.value]);
});
</script>
当我更改输入值时,我可以看到更改事件触发器,但也会触发nouislider的更新事件,这会导致输入返回其旧值。根据nouislider set
事件的文档,不应触发Update
事件。我错过了什么。
答案 0 :(得分:1)
在将值设置为滑块时删除&#39; null&#39;
应该是这样的:
noUiSlider.create(skipSlider3, {
start: [ 6 ],
connect: [true,false],
step: 1,
range: {
'min': 1,
'max': 24
}
});
skipSlider3.noUiSlider.on('update', function( values, handle ) {
var value = values[handle];
pointstopredicts.value = Math.round(value);
});
pointstopredicts.addEventListener('change', function(){
skipSlider3.noUiSlider.set([ this.value]);
});