【问题标题】:How do I POST all options in a select list?如何发布选择列表中的所有选项?
【发布时间】:2013-02-17 21:16:14
【问题描述】:

我有一个多选列表,其中包含一些项目。它是 ACL 的 IP 地址列表。人们可以添加/删除 IP,然后保存列表。但是,除非您选择列表中的项目,否则$_POST[selectName] 不包含任何值。我怎样才能做到这一点?我知道我可以用 javascript 做到这一点,但我宁愿坚持使用 PHP。

【问题讨论】:

  • 浏览器不会将这些值发送到 PHP,您需要 Javascript 来操作提交过程。因此,没有 PHP 唯一的方法来做到这一点
  • 传统的方法是使用使选择多选,然后在表单提交时让javascript选择所有选项。

标签: php javascript select


【解决方案1】:

为了解决这个问题,您还可以使用@Kamil 的代码的 jQuery 版本,它比循环简单一点:

<script type="text/javascript">
jQuery('[name="form1"]').on("submit",selectAll);

function selectAll() 
{ 
    jQuery('[name="selectName[]"] option').prop('selected', true);
}

</script>
<form name="form1" method="post" action="file2.php">
<select id="someId" name="selectName[]" multiple>
    <option value="123.123.123.123">123.123.123.123</option>
    <option value="234.234.234.234">234.234.234.234</option>
</select>
<input type="submit" name="submit" value=Submit onclick="selectAll();">  
</form>

【讨论】:

    【解决方案2】:

    编辑/更正:您需要 JS。无法通过 POST 发送所有(已选择和未选择)选项。您必须在提交之前以编程方式选择所有选项。

    带表格的文件(file1.php):

    <script type="text/javascript">
        function selectAll() 
        { 
            selectBox = document.getElementById("someId");
    
            for (var i = 0; i < selectBox.options.length; i++) 
            { 
                 selectBox.options[i].selected = true; 
            } 
        }
    </script>
    
    <form method="post" action="file2.php">
        <select id="someId" name="selectName[]" multiple>
            <option value="123.123.123.123">123.123.123.123</option>
            <option value="234.234.234.234">234.234.234.234</option>
        </select>
        <input type="submit" name="submit" value=Submit onclick="selectAll();">
    </form>
    

    接收POST的文件(file2.php):

    <?php
        foreach ($_POST['selectName'] as $item)
        {
        print "$item<br/>";
        }
    ?>
    

    【讨论】:

    • 他想要所有multiple发送的可用值,而不仅仅是选定的值。
    • @Pekka웃 aaah 所以也许他应该将所有这些选项设置为选中?
    • 是的;为此他需要 JavaScript
    • @Pekka웃 没错。我修正了我的答案。
    • 有人可以确认我的新答案吗?
    猜你喜欢
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 2022-07-26
    相关资源
    最近更新 更多