2013-03-20 67 views
0

我在我的页面上有三个jQuery滑块实例,但只有一个似乎正常工作。例如,按1-12按钮仅适用于第一个框,而滑块选择选项仅适用于一个选项。我该如何解决这个问题?三个自定义jQuery滑块不工作的实例

滑块只能在其框中改变复选框(同样适用于用户按下按钮时)。

这是到目前为止我的代码和jsfiddle

// slider 

    $(".slider_weekRange").slider({ 
     range: true, 
     min: 1, 
     max: 15, 
     step: 1, 
     values: [1, 12], 
     slide: function (event, ui) { 
      $(".search_weekRange").val(ui.values[0] + "-" + ui.values[1]); 
     } 
    }); 
    $(".search_weekRange").val($(".slider_weekRange").slider("values", 0) + 
     "-" + $(".slider_weekRange").slider("values", 1)); 

$(".slider_weekRange2").slider({ 
    range: true, 
    min: 1, 
    max: 15, 
    step: 1, 
    values: [1, 12], 
    slide: function (event, ui) { 
     $(".search_weekRange2").val(ui.values[0] + "-" + ui.values[1]); 
     $('input:checkbox[name="weeks_1"]').prop("checked", false); 
     $('input:checkbox[name="weeks_1"]').slice(ui.values[0] - 1, ui.values[1]).prop("checked", true); 
    } 
}); 
$(".search_weekRange2").val($(".slider_weekRange2").slider("values", 0) + 
    "-" + $(".slider_weekRange2").slider("values", 1)); 

// no weeks 

$('.week_none').click(function() { 
    $('input:checkbox[name="weeks_1"]').prop("checked", false); 
    $(".search_weekRange2").val(''); 
}); 

// all week 

$('.week_all').click(function() { 
    $('input:checkbox[name="weeks_1"]').prop("checked", true); 
    $(".search_weekRange2").val('1-15'); 
}); 

// weeks 1-12 

$('.week_term').click(function() { 
    $('input:checkbox[name="weeks_1"]').prop("checked", false); 
    $('input:checkbox[name="weeks_1"]').slice(0, 12).prop("checked", true); 
    $(".search_weekRange2").val('1-12'); 
}); 

// odd weeks 

$('.week_odd').click(function() { 
    $('input:checkbox[name="weeks_1"]').prop("checked", false); 
    $('input:checkbox[name="weeks_1"]:even').prop("checked", true); 
    $(".search_weekRange2").val('1,3,5,7,9,11,13,15'); 
}); 

// even weeks 

$('.week_even').click(function() { 
    $('input:checkbox[name="weeks_1"]').prop("checked", false); 
    $('input:checkbox[name="weeks_1"]:odd').prop("checked", true); 
    $(".search_weekRange2").val('2,4,6,8,10,12,14'); 
}); 

// checkbox 

$('input:checkbox[name="weeks_1"]').click(function() { 
    var s = []; 
    $('input:checkbox[name="weeks_1"]').each(function() { 
     if (this.checked) { 
      s.push($(this).next().text()); 
     } 
    }); 
    $(".search_weekRange2").val(s.join(',')); 
}); 
+0

只应在包装盒中滑块改变复选框? – 2013-03-20 13:22:15

+0

是的滑块只应该改变框内的盒子 – methuselah 2013-03-20 13:25:35

+0

似乎你所有的复选框都有相同的名称? – tymeJV 2013-03-20 13:27:17

回答

1

的问题是,你搜索的复选框,同时将通过.slice()你从0到15的范围内只选择复选框的一个子集,这显然仅匹配第一个框中的复选框。

而不是

slide: function (event, ui) { 
    $(".search_weekRange2").val(ui.values[0] + "-" + ui.values[1]); 
    $('input:checkbox[name="weeks_1"]').prop("checked", false); 
    $('input:checkbox[name="weeks_1"]').slice(ui.values[0] - 1, ui.values[1]).prop("checked", true); 
} 

使用本

slide: function (event, ui) { 
    $(this).parent().find(".search_weekRange2").val(ui.values[0] + "-" + ui.values[1]); 
    $(this).parent().find('input:checkbox[name="weeks_1"]').prop("checked", false); 
    $(this).parent().find('input:checkbox[name="weeks_1"]').slice(ui.values[0] - 1, ui.values[1]).prop("checked", true); 
} 

这里是jsFiddle

+0

谢谢弗拉基米尔。但是这并没有解决第二个错误。如果我按下方框2上的1-12按钮,它不起作用,但它在方框1上工作。其次,如果我按下奇数按钮,则取消选中一个复选框,然后在复选框中添加值而不是替换它。希望我清楚。只需测试你的jsfiddle,看看:-) – methuselah 2013-03-20 13:32:22

+0

完全一样的情况。使用'$(this).parent()。find(...)'而不是'$(...)'来将选择限制在当前框的范围内。我更新了jsFiddle。 – 2013-03-20 13:38:21

+0

我已经按照建议进行了更改,但现在当我取消选择/选择复选框并且文本框未读取默认选择时,文本框中的值不会更改:-(http://jsfiddle.net/ErQ7T/2/ – methuselah 2013-03-20 13:51:39