2012-11-29 45 views
0

我有一组使用此语法复选框:JavaScript和PHP不会发挥不错

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

这里的问题: 全部选中按钮只能当我删除SQU是来自输入名称的括号,即name="list"而不是name="list[]"。我需要括号,否则PHP表单处理程序将无法工作。我曾尝试在JS中添加括号,即onClick="uncheckAll(document.myform.list[])",但这也不起作用。

如何让JS和PHP很好地玩?

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

+1

添加类到您的输入并取消选择框按其类是方法之一。如何通过多选来做到这一点,我不知道。 – Jelmer

+1

为了让它看起来更好,试着在回声里面设置''而不是'“,然后你就不需要所有的'\\'。或者使用HEREDOC –

+1

尝试添加一个_reset_按钮到'形式,它会按照你的需要做。当然,如果你的元素不是复选框,它们也会被重置。 –

回答

1

它可与document.myform['list[]']访问:

echo "<input type=\"button\" name=\"UnCheckAll\" value=\"Uncheck All\" onClick=\"uncheckAll(document.myform['list[]'])\" /> 
+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)\" /> 
+0

感谢您指出了这一点! –

0

试试这个:

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

然后从HT调用此使用ML以下PHP代码片段:

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

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