NoUISlider与输入绑定

时间:2018-06-10 11:56:38

标签: javascript html5 nouislider

我正在使用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事件。我错过了什么。

JS小提琴:https://jsfiddle.net/rehanazher/8bcx0uvp/

1 个答案:

答案 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]);
      });