无法设置JQuery UI Slider的值

时间:2015-03-12 08:04:41

标签: javascript jquery jquery-ui

我在一个JQuery对话框中有3个滑块,我希望它们具有最大值,但最大值不仅仅是一个滑块,它是所有滑块的总和。我的脚本在google chrome debuger中正常运行唯一的问题是滑块的值未在$(this).slider("value", (sliderMax - sum));中更新

$(".slider").each(function() {
    var id = $(this).attr("id");
    id = id.replace("Slider", "Value");
    var sliderMax = 27;
    $(this).slider({
        range : "min",
        min : 0,
        max : sliderMax,
        value : $("#" + id).attr("value"),
        slide : function(event, ui) {
            var sum = 0;
            $(".sliderValue").each(function() {
                if ($(this).attr("id") != id) {
                    sum += parseInt($(this).attr("value"));
                }
            });
            if ((sum + $(this).slider("value")) > sliderMax){
                $(this).slider("value", (sliderMax - sum));
            }
            $("#" + id).val(ui.value);
        }
    });
});

请帮帮我。

2 个答案:

答案 0 :(得分:1)

这是因为parseIntvalue:... parseInt的参数在作为参数提供的字符串不包含数字时返回伪值!请在选项之外定义值变量,如下所示

   $(".slider").each(function() {
var id = $(this).attr("id");
id = id.replace("Slider", "Value");
var sliderMax = 27;
var _value=$("#" + id).attr("value");
$(this).slider({
    range : "min",
    min : 0,
    max : sliderMax,
    value :value,
    slide : function(event, ui) {
        var sum = 0;
        $(".sliderValue").each(function() {
            if ($(this).attr("id") != id) {
                var valueString=$(this).attr("value");
                sum += parseInt(valueString);
            }
        });
        if ((sum + $(this).slider("value")) > sliderMax){
            $(this).slider("value", (sliderMax - sum));
        }
        $("#" + id).val(ui.value);
    }
  });
});

<强> EDITS : 复制您的解决方案以帮助读者

         if ((sum + ui.value) > sliderMax){
           return false;
         }

答案 1 :(得分:1)

好的,我找到了解决方案:

if ((sum + ui.value) > sliderMax){
     return false;
}