如何操作jquery

时间:2016-04-14 09:52:23

标签: javascript php jquery checkbox

我想要一个jquery条件来处理以下场景 -

1)选中了一些复选框

2)选中所有复选框

我希望他们都在一个循环中。目前,我已将以下代码仅 选中所有复选框 -

$('.check-all').click(function() {
    var selector = $(this).is(':checked') ? ':not(:checked)' : ':checked';
    var ids = [];

    $('#chkall input[type="checkbox"]' + selector).each(function() {
        $(this).trigger('click');
        ids.push($(this).attr('value'));
    });
    var id = [];
    id = JSON.stringify(ids);
    document.cookie = "ids="+id;
});

将我的PHP代码中的复选框作为 -

echo '<ul class="list-unstyled" id="chkall">';
foreach ($contacts as $contact) {
    echo '<li>
    <div class="checkbox" id="checkboxes">
        <label><input type="checkbox" class="case" name="case" value="'.$contact['cust_id'].'" id="'.$contact['cust_id'].'">'.$contact['cust_fname'].' '.$contact['cust_lname'].'</label>
    </div>
</li>';
}

那么,我应该如何在单个循环中处理这两种情况?我在检查完成后发送了一个cookie。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案&amp;现在以下列方式执行此操作 -

PHP代码 -

echo '<ul class="list-unstyled" id="chkall">';
foreach ($contacts as $contact) {
    echo '<li>
    <div class="checkbox" id="checkboxes" onclick="getID('.$contact['cust_id'].')">
        <label><input type="checkbox" class="check-all" name="case" value="'.$contact['cust_id'].'" id="'.$contact['cust_id'].'">'.$contact['cust_fname'].' '.$contact['cust_lname'].'</label>
    </div>
</li>';
}

<div class="checkbox" onclick="getID('0')">
    <?= Html::checkbox(null, false, [
        'id' => 'selectall',
        'label' => 'Select all',
        'class' => 'check-all',
        ]);?>
    </div>
</div>

相应的脚本是 -

var ids = [];
function getID(id) {
    var checkboxlist = document.getElementsByName('case');
    var itr = 0, checkedFlag = 0, uncheckedFlag = 0;
    var inputElements = document.getElementsByClassName('check-all');
    if (id == 0) {
        $(".check-all").prop("checked", $("#selectall").prop("checked"))
    }
    else {
        for (var i = 0; inputElements[i]; ++i) {
            if (inputElements[i].value == id) {
                if (inputElements[i].checked == true) {
                    inputElements[i].checked = false;
                    break;
                }
                else {
                    inputElements[i].checked = true;
                    break;
                }
            }
        }
        while (itr < checkboxlist.length) {
            if (checkboxlist[itr].checked == true) {
                checkedFlag++;
            }
            else {
                $("#selectall").prop("indeterminate", true);
                uncheckedFlag++;
            }
            itr++;
        }
        if (checkedFlag == checkboxlist.length) {
            $("#selectall").prop("indeterminate", false);
            $("#selectall").prop("checked", true);
        }
        if (uncheckedFlag == checkboxlist.length) {
            $("#selectall").prop("indeterminate", false);
            $("#selectall").prop("checked", false);
        }
    }
}

那就是!!!