0

我有一组使用这种语法的复选框:

echo "<form name=\"myform\" method=\"POST\" action=\"csvbuilder.php\">";
echo "<input type=\"checkbox\" name=\"list[]\" value=\"".$res['id']."\" />";

在底部我有一个“检查所有”按钮..

echo "<input type=\"button\" name=\"UnCheckAll\" value=\"Uncheck All\" onClick=\"uncheckAll(document.myform.list)\" />

这是指以下JS脚本..

function checkAll(field) {
  for (i = 0; i < field.length; i++)
    field[i].checked = true ;
}

问题是:检查所有按钮仅在我从输入名称中删除方括号时才有效,即name="list"name="list[]". 我需要括号,否则 PHP 表单处理程序将无法工作。我已经尝试将括号添加到 JS,即,onClick="uncheckAll(document.myform.list[])"但这也不起作用。

如何让 JS 和 PHP 玩得很好?

感谢所有响应者。我特别感谢任何参考/解释/jfiddles。

4

3 回答 3

1

您错过了粘贴checkAll按钮

JS函数:

function checkAll(frm){
    var checkBoxes = frm.elements['list[]'];
    for (i = 0; i < checkBoxes.length; i++){
        checkBoxes[i].checked = (frm.CheckAll.value == "Check All") ? 'checked' : '';
    }
    frm.CheckAll.value = (frm.CheckAll.value == "Check All") ? "Uncheck All" : 'Check All';
}

点击:

echo "<input type=\"button\" name=\"CheckAll\" value=\"Check All\" onClick=\"checkAll(document.myform)\" />
于 2012-11-29T08:35:29.450 回答
1

它可以通过以下方式访问document.myform['list[]']

echo "<input type=\"button\" name=\"UnCheckAll\" value=\"Uncheck All\" onClick=\"uncheckAll(document.myform['list[]'])\" />
于 2012-11-29T08:39:41.253 回答
0

试试这个:

function checkAll(fieldName) {
    var fields = document.getElementsByName(fieldName);
    for (i=0; i<fields.lengh; i++) {
        fields[i].checked = true;
    }
}

然后使用以下 PHP 片段从 HTML 调用它:

echo "<input type=\"button\" name=\"UnCheckAll\" value=\"Uncheck All\" onClick=\"uncheckAll('list[]')\" />

请注意,onClick按钮的 -function 现在调用checkAll-function 传递元素名称而不是元素。

于 2012-11-29T08:38:06.663 回答