Javascript和PHP不会很好玩

时间:2012-11-29 08:28:03

标签: php javascript arrays forms

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

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 ;
}

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

如何让JS和PHP很好地发挥?

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

3 个答案:

答案 0 :(得分: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';
}

的OnClick:

echo "<input type=\"button\" name=\"CheckAll\" value=\"Check All\" onClick=\"checkAll(document.myform)\" />

答案 1 :(得分:1)

可以使用document.myform['list[]']

访问它
echo "<input type=\"button\" name=\"UnCheckAll\" value=\"Uncheck All\" onClick=\"uncheckAll(document.myform['list[]'])\" />

答案 2 :(得分: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 - 函数现在调用checkAll - 函数传递元素名称而不是元素。