代码之家  ›  专栏  ›  技术社区  ›  Rehan Azher

带输入的Nouisider绑定

  •  1
  • Rehan Azher  · 技术社区  · 7 年前

    我使用nouisider允许用户输入数字。它工作得很好,但是现在我想添加一个输入,以便在不拖动它的情况下更新nouisider的值。但有些是我做不到的。下面是我的代码的外观:

      <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>
    

    当我更改输入值时,我可以看到更改事件触发器,但也会触发nouisider的更新事件,这会导致输入返回其旧值。根据Nouisider文件 set 事件不应触发 Update 事件。我错过什么了吗?

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   iStepashka    7 年前

       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]);
          });
    
    推荐文章