javascript - jquery 多个 slider 将值插入文本框

标签 javascript jquery-ui

我有多个 slider 共享一个共同的最大数字,我现在尝试将这些数字捕获到文本输入中,但我不知道我在做什么。 JavaScript 将打印 只要类(class)“用完”,将数字放入跨度中就没有问题。但当我尝试使用文本输入时不起作用。我还为此做了一个jsfiddle http://jsfiddle.net/zkyks/

将这些值绑定(bind)到输入的正确方法是什么?我已经通过调用 id 单独完成了此操作,但我不知道如何在这里实现。

提前致谢。

JS

$(

function () {
    var
    maxValueSlider = 100,
        maxValueTotal = 100,
        $sliders = $("#eq .work_slider"),
        valueSliders = [],
        $displaySpentTotal = $('#spent');
    $displaySpendable = $('#spendable');

    function arraySum(arr) {
        var sum = 0,
            i;
        for (i in arr) sum += arr[i];
        return sum;
    }

    $sliders.each(

    function (i, slider) {
        var
        $slider = $(slider),
            $spent = $slider.next('.spent');
        valueSliders[i] = 0;
        $slider.slider({
            range: 'min',
            value: 0,
            min: 0,
            max: maxValueSlider,
            step: 5,
            animate: true,
            orientation: "horizontal",
            slide: function (event, ui) {
                var
                sumRemainder = arraySum(valueSliders) - valueSliders[i],
                    adjustedValue = Math.min(maxValueTotal - sumRemainder, ui.value);
                valueSliders[i] = adjustedValue;
                // display the current total
                $displaySpentTotal.text(sumRemainder + adjustedValue);
                $displaySpendable.text(maxValueTotal - sumRemainder - adjustedValue);
                // display the current value
                $spent.text(adjustedValue);
                // set slider to adjusted value
                $slider.slider('value', adjustedValue);

                // stop sliding (return false) if value actually required adjustment
                return adjustedValue == ui.value;

            }
        });
    });
});

HTML

<div class="panel">
    <label class="panel_label">Sliders %:</label>
    <div id="eq">
        1:<div id="work_slider1" name="work_slider1" class="work_slider"></div>
             <input type="text" name="work_spent1" id="work_spent1" />
        2:<div id="work_slider2" name="work_slider2" class="work_slider"></div>
             <input type="text" name="work_spent2" id="work_spent2" />
        3:<div id="work_slider3" name="work_slider3" class="work_slider"></div>
             <input type="text" name="work_spent3" id="work_spent3" />
        4:<div id="work_slider4" name="work_slider4" class="work_slider"></div>
              <input type="text" name="work_spent4" id="work_spent4" />
    </div>
    <div id="spendable">100</div>
</div>

最佳答案

要在代码中进行最少的更改,您只需在 return 之前添加一行即可您的 slide: function (event, ui) {...} 中的声明:

$(this).next().val(adjustedValue); //set the value of input next to slider

并删除 <br/>之间<div><input>

或者保留一个<br/>并使用:

$(this).next().next().val(adjustedValue);

工作示例: http://jsfiddle.net/k8UkE/

关于javascript - jquery 多个 slider 将值插入文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23616999/

相关文章:

javascript - 如何使用 onclick 按钮重新调用生成函数

javascript - 使用带有返回值和 If/Else 语句的函数

javascript - Bootstrap : hide links on navbar collapse

html - 带有禁用字段的 JQuery UI DatePicker

css - jQuery UI 自动完成 - 下拉条件样式

javascript - 如何在 JqueryUI 对话框关闭时执行回调

javascript - 如何将悬停叠加到 flex 容器中的 flex 元素

javascript - Jquery Flot 条形图不适合板子

javascript - jQuery 将 UL 与 LI 附加到按钮单击时下拉列表中的值

javascript - JQuery——如何实现类似 mac os dock 的显示/隐藏行为的动画?