【问题标题】:Get all checked elements and a value to an array获取所有选中的元素和一个数组的值
【发布时间】:2011-02-08 02:14:00
【问题描述】:

我有一个自定义的固定标题表元素。基本上它的工作原理是我设置一个类,该类将根据从数据库返回的数据填充到该类型的类列表中。我想为每个返回的元素设置复选框,如果选中,这些复选框将被添加到数组中。当用户选择“打印”时,我有逻辑将打印所选行的记录。我在标题中也有该列的全选选项。这是一个简单的例子:

|Name|ID|Product|Date|Select All 'checkbox'|
-----------------------------------------
|JonS|01|prodOne|Date|'checkbox'           |
|AmyA|02|prodTwo|Date|'checkbox'           |

当用户选择全选复选框时,我有以下 javascript 将选择/取消选择每个复选框元素。

function showHideAll() {
    if (document.getElementByID('AllCheckBox').checked == 1){
        $('.RowCheckBoxClass').attr('checked',true);
    }
    else {
        $('.RowCheckBoxClass').attr('checked',false);
    }
}

一切正常,一切正常。底部有一个“打印”按钮。基本上我将其作为打印队列运行。选择您想要的记录并点击打印,它将打印选定的记录。我怎样才能找到选定的行?我需要选中行复选框的 ID。在我的将成为数据列表的类中,我可以添加一个 onclick 函数。问题是,我不想每次用户单击复选框并且必须保留查询字符串时回发。我只想获取复选框行的 ID,然后使用 javascript 或 c# 方法将其添加到数组中。

我正在考虑使用一个 jscript 方法来扫描并查看哪些框被选中。但是,我仍然无法将这些添加到队列中。有什么帮助或想法吗?

【问题讨论】:

    标签: c# javascript checkbox


    【解决方案1】:

    看起来你已经在使用 jQuery了:

      var checkedIdList = [];
      $('.RowCheckBoxClass').each(function(_, cb) {
        if (cb.checked) {
          checkedIdList.push($(cb).closest('tr').find('td')[1].text());
        }
      });
    

    如果“id”值是数字,那么您可能希望将文本转换为数字:

          checkedIdList.push(parseInt($(cb).closest('tr').find('td')[1].text(), 10));
    

    【讨论】:

      【解决方案2】:

      更好的方法是为所有选中的项目添加一个类,并在复选框中添加一个 rel 来存储 id。现在,当您尝试获取所有已检查的内容时,请使用已检查的类调用 all 并加入所有 id。


        function showHideAll() {
              if (document.getElementByID('AllCheckBox').checked == 1){
                  $('.RowCheckBoxClass').attr('checked',true);
              }
              else {
                  $('.RowCheckBoxClass').attr('checked',false);
              }
          }
      

      可以简化为

      function showHideAll() {
              $('.RowCheckBoxClass').attr('checked', $('#AllCheckBox').attr('checked'));
      }
      

      【讨论】:

        【解决方案3】:

        要扫描页面并找到所有选中的行,您可以这样做(因为您已经在使用 jQuery):

        $(".RowCheckBoxClass:checked");
        

        【讨论】:

        • 这可以抓取所有被检查的元素。我做了 var checkedItems = $(".RowCheckBoxClass:checked");并得到了检查项目的集合。我怎样才能找到检查了哪些项目?遍历这个集合并找到他们的 ID?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        • 2017-05-31
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        相关资源
        最近更新 更多