获取所有多个列表框值

时间:2010-11-15 09:32:13

标签: php javascript

我有一个多选列表框,我在其中使用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 个答案:

答案 0 :(得分: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);
}   
    ?>

答案 1 :(得分:1)

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

一种方法是使用<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);
}   
    ?>

这样做意味着每次表单提交时,您都可以使用explode()为selct框创建一个可用值数组。