如何在选择列表中发布所有选项?

时间:2013-03-03 20:28:07

标签: php javascript select

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

2 个答案:

答案 0 :(得分:18)

编辑/纠正:你需要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/>";
    }
?>

答案 1 :(得分: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>