2010-11-15 116 views
0

我有一个多选列表框,其中使用javascript插入项目。在某个点上,我需要获取所有条目的值(包括已选择和未选中)的值。 我目前使用此代码:获取所有多个列表框值

<form method="post" action="?page=test" name="something"> 
<select name="thelist[]" id="selOriginalWindow" size="5" multiple="multiple"> 
</select> 
<input type="button" value="Добави" onclick="openInNewWindow();" /> 
<input type="submit" value="Get" /> 
</form> 

    <? 
if ($_GET['page']=="test") { 
    $thelist=$_POST['thelist']; 
    var_dump($thelist); 
} 
    ?> 

的Javascript插入值,但是PHP只得到所选项目的价值。如何获得该列表框中所有项目的值?

回答

2

这奏效了:

function selectAll(selectBox,selectAll) { 
    if (typeof selectBox == "string") { 
     selectBox = document.getElementById(selectBox); 
    } 
    if (selectBox.type == "select-multiple") { 
     for (var i = 0; i < selectBox.options.length; i++) { 
      selectBox.options[i].selected = selectAll; 
     } 
    } 
} 
</script> 
<form method="post" action="?page=test" name="something"> 
<select name="thelist[]" id="selOriginalWindow" size="5" multiple="multiple"> 
</select> 
<input type="button" value="Добави" onclick="openInNewWindow();" /> 
<input type="submit" value="Get" onclick="selectAll('selOriginalWindow',true)" /> 
</form> 

    <? 
if ($_GET['page']=="test") { 
    $thelist=$_POST['thelist']; 
    var_dump($thelist); 
} 
    ?> 
+0

@DreamWave,但你现在怎么区分用户选择和代码选择?如果你自动选择一切,下拉菜单有什么意义? – 2010-11-15 10:06:44

+0

这个想法是,列表框在开始处是空的。用户点击一个按钮,打开一个新的窗口,他在三个不同的下拉菜单中选择。然后将结果格式化并作为格式化值和文本插入到第一个窗口中。用户做出了他的选择,然后我需要所有的条目。 最后,这将是一个交通系统 - 我需要这个,所以用户可以选择一个国家,一个地区和一个城市......但由于它们之间有很多组合 - 这是我认为它应该是这样的方式。对不起,如果我在我的帖子中没有足够的解释。 – DreamWave 2010-11-15 10:16:27

+0

@DreamWave为啥掉下来?用户可以选择项目但没有意义,这有点令人困惑。把它作为纯文本而不是.. – 2010-11-15 10:58:39

1

post变量将只包含您选择的值,因此如果您想使用相同的方法发送所有值,则需要向包含所有值的表单添加一个附加字段。然后您可以从中读取所有值。

一种方法是使用<input ='hidden' value='arrayofallvalues' name='allvalues'/>

所以,你可以有以下几种:

<? 
$select_values=array('value1', 'value2','value3'); 
?> 

<form method="post" action="?page=test" name="something"> 
<select name="thelist[]" id="selOriginalWindow" size="5" multiple="multiple"> 
<? 
for ($i= 0; $i< count($select_values); $i++) { 
    echo "<option value=".$select_values[$i].">".$select_values[$i]."</option>"; 
} 

?> 
</select> 
<input ='hidden' value='".implode(",",$select_values)."' name='allvalues'/> 
<input type="button" value="Добави" onclick="openInNewWindow();" /> 
<input type="submit" value="Get" /> 

</form> 

    <? 
if ($_GET['page']=="test") { 
    $thelist=$_POST['thelist']; 
    $all_select_values=explode(",",$_POST['allvalues']); 
    var_dump($thelist); 
} 
    ?> 

这将完成是意味着每一个表单提交的时候,你可以使用爆炸()创建selct框的可用值的数组。

+0

是的,我通常使用这个代码,但这个时候我不能。在选择框中输入的值是唯一的,由php未知 - 用户选择它们并通过javascript插入它们。这就是为什么我的代码选项中缺少的选项是动态插入的。也许我应该插入一个JavaScript,点击提交按钮后将选择所有的值? – DreamWave 2010-11-15 09:52:45