2013-03-03 51 views
6

我有一個選擇多個列表,其中有幾個項目。它是一個ACL的IP地址列表。人們可以添加/刪除IP,然後保存列表。但是,除非您選擇列表中的項目,否則$_POST[selectName]不包含任何值。我怎樣才能做到這一點?我知道我可以用JavaScript做到這一點,但我寧願堅持PHP。如何在選擇列表中發佈所有選項?

+4

瀏覽器不會將這些值發送到PHP,您將需要使用Javascript來操作th提交過程。因此,沒有PHP的唯一方法來做到這一點 – 2013-03-03 20:30:17

+0

你見過這個? http://stackoverflow.com/questions/2407284/how-to-get-multiple-selected-values-of-select-box-in-php – Kamil 2013-03-03 20:31:56

+2

傳統的做法是使用選擇多選,然後在表單提交有JavaScript選擇所有選項。 – Jodes 2013-03-03 20:38:09

回答

14

編輯/更正:您需要JS。沒有辦法通過POST發送所有(選擇和未選擇)選項。您必須在提交之前以編程方式選擇所有選項。接收POST(file2.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> 

文件:

文件與表格(file1.php)

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

他希望所有可能的值都來自'multiple',而不僅僅是選定的值。 – 2013-03-03 20:37:14

+0

@Pekka웃aaah所以也許他應該將所有這些選項設置爲選中狀態? yup; – Kamil 2013-03-03 20:39:23

+0

yup;他會需要JavaScript的 – 2013-03-03 20:40:00

2

只是爲了釘在這你也可以使用的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> 
相關問題