-2

试图为从 MySQL 查询中动态创建的行创建臭名昭著的 checkall 复选框。行(以及复选框)的范围可以从 1 行到一个公制对接。

表格(不带checkall)如下:

<form name="form" method="post" action = "process.order.php">

<?php
while($fetch = mysql_fetch_array($order_query){

$order_id = $fetch['oid'];
$order_status = $fetch['ostat'];

?>

   <input type="checkbox" name="order_row[<?=$order_id?>]" id="1" value="1">
   <select name="status[<?=$order_id?>]" id="status[<?=$order_id?>]"
   <option value="Ordered">Ordered</option>
   <option value="Backordered">Backordered</option>
   </select>
<? } ?>


<input type="submit" name="submit" id="submit" value="submit"> </form>

在 process.order.php 中:

<?php
if(is_array($order_row)){
foreach($order_row as $order_id=>$val){

...接下来是脚本的其余部分。我尝试使用这个:如何在 HTML 中实现“全选”复选框? 这: 全选复选框

我现在试图避免使用 jQuery。有没有办法可以将 PHP 脚本生成的复选框名称调用到 javascript 代码中?

更新: 我想使用一个可以跨多个页面调用的函数。因此,调用在 JS 中嵌入表单名称对我来说并不实用。另外,我希望它是一个复选框 - 按钮效果很好,但我试图保持 UI 简单,并且我已经有很多按钮我试图摆脱......

4

2 回答 2

5

工作示例

你可以这样做:

var frm = document.forms['form'];
for (var i = 0, l = frm.elements.length; i < l; i++) {
   if (frm.elements[i].type === 'checkbox') {
      frm.elements[i].checked = true;
   }
}

同样,取消选中所有设置:

frm.elements[i].checked = true;

false.

您还可以使用上面的代码轻松创建checkAll和函数。unCheckAll


顺便说一句,id只有数字的值是无效的,您应该使用字母或字母和数字字符的混合。

于 2012-06-15T16:36:08.883 回答
0

如果您不必支持 IE6 或 7,则可以使用以下方法。

现场演示

var checkAll = document.getElementById("checkall");

checkAll.onclick = function(){
    [].forEach.call(
        document.forms['form'].querySelectorAll("input[type='checkbox']"),
        function(el){
            el.checked=true;
    });
}

​ ​</p>

于 2012-06-15T16:39:24.610 回答