Нужна помощь с установленными флажками jquery - PullRequest
0 голосов
/ 04 сентября 2011

У меня есть структура DOM, похожая на эту (я не хочу показывать другие тд из-за переполненности):

<table>
<tr><td><input type="checkbox" name="checkbox1" class="rowSelectCheckbox"></td></input></tr>
<tr><td><input type="checkbox" name="checkbox2" class="rowSelectCheckbox"></td></input></tr>
<tr><td><input type="checkbox" name="checkbox3" class="rowSelectCheckbox"></td></input></tr>
<tr><td><input type="checkbox" name="checkbox4" class="rowSelectCheckbox"></td></input></tr>

</table>

<input type="checkbox" name="checkbox_select" id="lastCheckbox"></input>

Я пытаюсь установить последний флажок с идентификаторомиз lastCheckbox для проверки, если отмечены любые других флажков (любые из них с идентификатором checkbox1, флажок 2 и т. д.), в противном случае, если все другие флажки сняты, установите этот последнийфлажок снят тоже.

Ответы [ 5 ]

1 голос
/ 04 сентября 2011

Один маленький рывок: закрывающий тег </input> принадлежит перед тегом </td>.

В остальном это довольно просто.

$(".rowSelectCheckbox").click(function(){
    var lastCheckbox = $("#lastCheckbox");
    if $(".rowSelectCheckbox:checked").length) {
        lastCheckbox.attr("checked", "checked");
    } else {
        lastCheckbox.removeAttr("checked");
    }
});
0 голосов
/ 04 сентября 2011

Следующий jQuery должен выполнить трюк

$(document).ready(function() {
    $(".rowSelectCheckbox").click(function() {
        var numChecked = $(".rowSelectCheckbox").filter(":checked").length;

        if(numChecked > 0)
        {
            $("#lastCheckbox").prop("checked", "checked");
        }
        else
        {
            $("#lastCheckbox").prop("checked", false);
        }
    });
});

. Он будет подсчитывать количество отмеченных флажков при нажатии любого из них, и, если это число больше 0, отметьте последний флажок за пределамитаблица.

Вот рабочий пример здесь .

0 голосов
/ 04 сентября 2011

Вы должны сделать что-то вроде этого:

$('.rowSelectCheckbox').change( function() {
    flag = false;
    $('.rowSelectCheckbox').each( function() {
        if ($(this).is(':checked')) {
            flag = true;
        }
    });    
    $('#lastCheckbox').prop('checked', flag);
});

Демонстрация здесь: http://jsfiddle.net/nayish/teXHe/

0 голосов
/ 04 сентября 2011

Быстрый if-тест должен сделать это:

$("input.rowSelectCheckbox").change(function(){
    if ( $("input.rowSelectCheckbox:checked") ) { //include "rowSelectCheckbox" so id=lastCheckbox doesn't trip the test
        $("input#lastCheckbox").attr("checked");
    }
    else
        $("input#lastCheckbox").removeAttr("checked");
    }
});

Цикл, такой как .each (), не нужен, так как вас волнует только (любой) один из input.rowSelectCheckbox проверено.Это вернет true в первый раз, когда встретится с <input class="rowSelectCheckbox" />, который проверен;)

0 голосов
/ 04 сентября 2011

Попробуйте это:

$('.rowSelectCheckbox').change( function() {
    $('.rowSelectCheckbox').each( function() {
        if ($(this).prop('checked')) {
            $('#lastCheckbox').prop('checked', true);
            return false;
        }

        $('#lastCheckbox').prop('checked', false);
    } );
} );

Скрипка: http://jsfiddle.net/B78vP/

...