我在一个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);
}
});
});
请帮帮我。
答案 0 :(得分:1)
这是因为parseInt
和value:...
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;
}