0

ページにjQueryスライダーのインスタンスが3つありますが、正しく機能しているのは1つだけのようです。たとえば、1〜12ボタンを押すと、最初のボックスでのみ機能し、スライダー選択オプションは1つのオプションでのみ機能します。どうすればこれを解決できますか?

スライダーは、そのボックス内でのみチェックボックスを変更する必要があります(ユーザーがボタンを押した場合も同様です)。

これが私のこれまでのコードと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(','));
});
4

1 に答える 1

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です

于 2013-03-20T13:28:10.480 に答える