0

我有一个项目列表,这些项目生成为:

<input type="checkbox" name="sacb" onchange="selAll();" title="select all"/>
  <?php
  while($row = mysql_fetch_array($res)){
    echo "<div><input type='checkbox' name='cb' value='$row[id]'>$row[item]</div>";
  }
?>

脚本

function selAll(){
  var s = document.form.sacb;
  var t = document.form.cb;
  for(var i=0; i<t.length; i++){
    t[i].checked = s.checked;
  }
}

这可以很好地选择/取消选择所有复选框。

我想提交此表格,其中要删除多个/所有选定项目。但我没有得到所有选中的复选框。我搜索并发现我需要将我的 PHP 代码替换为:

<input type='checkbox' name='cb[]' value='$row[id]'>$row[item]

但是一旦我这样做,脚本就无法选择所有复选框。如何解决这个问题呢?有什么解决办法吗?

4

2 回答 2

1

您不能使用点符号来访问名称中带有括号的元素,因此您必须使用元素集合来检索它们

function selAll(){
    var s = document.form.sacb;
    var checkboxes = document.form.elements['cb[]'];
    for (var i = 0; i < checkboxes.length; i++) {
        checkboxes[i].checked = s.checked;
    }
}
于 2013-07-20T05:30:17.643 回答
1

您可以从下面的 javascript 更新选定的复选框

请添加您的代码以选择数组的数量以获取简单的 javascript 在此示例中,我使用 jquery 来获取复选框数组并检查它是否被选中

var field, fields = $('.edit_user_notifi :checkbox'), i = fields.length;
        var notification_status = '';
        while (i--) {
            field = fields[i];
            if(notification_status == '')
            {
                if (field.checked) {
                    notification_status = field.id+'~1';

                } else {
                    notification_status = field.id+'~0';
                }
            }else{

                if (field.checked) {
                    notification_status = notification_status +','+ field.id+'~1';
                }else{
                    notification_status = notification_status +','+ field.id+'~0';
                }

            }
        }

只需更改一些逻辑即可使用简单的 javascript,或者如果您使用 jquery 会更好。

于 2013-07-20T05:35:59.120 回答