javascript - 使用 Bootstrap Slider 一个 Slider 结果是另外两个 Slider 的总和

标签 javascript jquery html twitter-bootstrap bootstrap-slider

我试图用 Slider2 和 Slider3 的总和来更新 Slider1 的值,但它只显示 Slider1 或 Slider2 的值,以移动的为准。我在更新 Slider1 的值时犯了一些错误。

Here is the Working Fiddle

code.html

    <div class="wrapper">
    <p>
    Slider1
    </p>
    <input id="ex1" data-slider-id='ex1Slider' type="text" data-slider-min="0" data-slider-max="50" data-slider-step="1" />
        <hr />
        <p>
    Slider2
    </p>
        <input id="ex2" data-slider-id='ex2Slider' type="text" data-slider-min="0" data-slider-max="20" data-slider-step="1" />
        <hr />
        <p>
    Slider3
    </p>
        <input id="ex3" data-slider-id='ex3Slider' type="text" data-slider-min="0" data-slider-max="20" data-slider-step="1" />
        <hr />

    </div>

Javscript.js

    var minSliderValue1 = $("#ex1").data("slider-min");
    var maxSliderValue1 = $("#ex1").data("slider-max");
    var minSliderValue2 = $("#ex2").data("slider-min");
    var maxSliderValue2 = $("#ex2").data("slider-max");

    $('#ex1').slider({
        value : 0,
      formatter: function(value) {
        return 'Current value: ' + value;
      }
    });

    $('#ex2').slider({
        value : 0,
      formatter: function(value) {
        return 'Current value: ' + value;
      }
    });

    $('#ex3').slider({
        value : 0,
    });

    // If You want to change input text using slider handler
    $('#ex1').on('slide', function(slider){
      $("#ex3,#ex2").val(slider.value);
    });

    // If you want to change slider using input text
    $("#ex3,#ex2").on("slide", function() {
        var val = Math.abs(parseInt(this.value, 10) || (minSliderValue1+minSliderValue2));
        this.value = val > (maxSliderValue1+maxSliderValue2) ? (maxSliderValue1+maxSliderValue2) : val;
        $('#ex1').slider('setValue', val);
    });

code.css

    .wrapper {
        padding : 20px;
        margin-top : 20px;
    }

最佳答案

您的问题来自$('#ex1').slider('setValue', val);val 仅包含当前正在滑动的 slider 的值,而不是两者的总和。

此外,也许您希望为 slider 2 和 3 设置 minmax 值,而不是 1 和 2(如果您使用 1 作为 slider ) 2 和 3 之和)。

更新以包括代码调整

slide 事件监听器中您需要的是:

$('#ex1').slider('setValue', $('#ex2').slider('getValue') + $('#ex3').slider('getValue'));

所以更新后的函数是:

// If you want to change slider using input text
$("#ex3,#ex2").on("slide", function() {
    $('#ex1').slider('setValue', $('#ex2').slider('getValue') + $('#ex3').slider('getValue'));
});

http://jsfiddle.net/qng5935v/12/

关于javascript - 使用 Bootstrap Slider 一个 Slider 结果是另外两个 Slider 的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37774510/

相关文章:

javascript - jquery悬停和关闭问题

javascript - 正则表达式/[a-zA-Z0-9_-]/传 `!!!`时返回true

javascript - .load() 完成的成功回调

html - 为什么我的 div 不能与背景图片正确对齐?

html - 在 HTML 表格中自动换行

javascript - jQuery 单击不起作用,但切换可以

javascript - 使用 Jquery 或/和 javascript 检测网页中是否正在播放任何视频?

jquery 移动输入格式化所需字段的更改

jquery - 为什么我的 Knockout.js 值没有被保存?

html - 将影子 DOM 附加到自定义元素可以消除错误,但为什么呢?