【问题标题】:Javascript and PHP won't play niceJavascript 和 PHP 不会很好玩
【发布时间】:2012-11-29 08:28:03
【问题描述】:

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

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。

【问题讨论】:

  • 在您的输入中添加一个类并取消选中其类的选择框是一种方法。如何通过多选来做到这一点,我不知道。
  • 为了让它看起来更好尝试在 echo 中设置 '' 而不是 "" 这样你就不需要所有的 `\`。或使用 HEREDOC
  • 尝试在&lt;input type="reset" value="Uncheck All"/&gt; 表单中添加一个reset 按钮,它会满足您的需求。当然,如果你有 other 以外的元素,它们也会被重置
  • @eric.itzhak 我不确定你对所有引用的理解,但我只是一次重复一行,我不觉得这证明了 HEREDOC ://
  • @EliasVanOotegem 好主意!我不知道为什么我没有想到这一点。谢谢!不幸的是,它并没有解决我的另一半问题..

标签: php javascript arrays forms


【解决方案1】:

可以通过document.myform['list[]']访问:

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

【讨论】:

  • 感谢您的简单解决方案
【解决方案2】:

您错过了粘贴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)\" />

【讨论】:

    【解决方案3】:

    试试这个:

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

    然后使用以下 PHP sn-p 从 HTML 调用它:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 2014-10-27
      • 1970-01-01
      • 2011-09-17
      相关资源
      最近更新 更多