使用Select-All Checkbox移动数据

时间:2012-09-12 10:17:02

标签: javascript jquery html asp.net-mvc-3

目前我有两张桌子

我在左上角的复选框中选择了所有功能,但是点击一个全选突出显示BOTH表中的所有复选框,而我只希望在特定的“全部检查”中选中所有框。

此外,当我选择全部并单击其中一个方向按钮<或者>,它将所有行拖动得很好但是用它拖动标题如下所示:

我的JQuery目前非常简单,但我显然错过了一些东西 -

 $('#select-all').click(function (event) {
        if (this.checked) {
            // Iterate each checkbox
            $(':checkbox').each(function () {
                this.checked = true;
            });
        }
        else
        // Iterate each checkbox
            $(':checkbox').each(function () {
                this.checked = false;
            });
    });

'select-all'是'tarifs de quittancement'中select-all复选框的ID。

感谢任何帮助

修改

我的JQuery for the gt;按钮代码如下:

   $("#move-to-1").on("click", function () {
        var selected = $("#table2").find("input:checked");

        selected.each(function (idx, elem) {
            $(elem).closest("tr").detach().appendTo($("#table1 tbody"));
        });
    });

这可以很好地将所有表从一个表移动到另一个表,但我不希望包含select-all复选框/表头的行与其余的行数据一起移动。怎么办呢?

再次感谢。

进一步修改

现在它已全部排序,除了一个小错误,选择一个复选框行(不是全选)并移动它<或者>导致所有行被移动。

正在使用的JQuery:

   $('#move-to-1').on('click', function () {
        var selected = $('#table2').find('input:checked');
        selected.each(function (idx, elem) {
            $(elem).closest('tbody').find('tr').detach().appendTo($("#table1 tbody"));
            $('input[type=checkbox]').attr('checked', false);
        });
    });   

   $('#select-all').click(function (event) {
    $(this).closest('table').find(':checkbox').prop('checked', this.checked);
    });

3 个答案:

答案 0 :(得分:3)

您只需要修改当前表格中的复选框。由于您没有显示您的标记,因此很难猜出正确的选择器可能看起来如何,或者您是否正在使用表格,但尝试如下:

$('#select-all').click(function (event) {
    $(this).closest('table').find(':checkbox').prop('checked', this.checked);
});

更新:

要解决您的第二个问题,假设您已使用<thead><tbody>部分将这些表格中的标题与正文分开,您可以调整您的选择器:

$('#move-to-1').on('click', function () {
    var selected = $('#table2 tbody').find('input:checked');
    selected.each(function (idx, elem) {
        $(elem).closest('tr').detach().appendTo($("#table1 tbody"));
    });
});

答案 1 :(得分:1)

$('#select-all').click(function (event) {

        // mention the table

        var table = $('selector_to_your_table');

        if (this.checked) {
            // Iterate each checkbox
            table.find(':checkbox').each(function () {
                this.checked = true;
            });
        }
        else
        // Iterate each checkbox
            table.find(':checkbox').each(function () {
                this.checked = false;
            });
    });

注意

最新版本的jQuery :checkbox已被弃用。的 See here.

而不是:checkbox使用input[type=checkbox]

答案 2 :(得分:0)

而不是:

$(':checkbox').each(function () {
  this.checked = true;
});

执行:

$('some_sort_of_selector :checkbox').attr('checked', true);

您不需要each()循环 - jQuery会自动执行。您需要某种选择器来限制更改哪些复选框。

我注意到你有#select-all - 然而你说你有两个全选复选框。你不能这样做。 ID必须是唯一的。