在双列表框PHP中获取选定的值

时间:2013-07-19 06:04:26

标签: php javascript mysql

我想从右侧列表框中输出所选值。但是我没有成功获取所选值的值。错误从js的submit函数返回。谁能告诉我为什么会回来:

An object doesn't support this property 

在提交功能?我怎样才能获得值..我会在PHP中使用ajax还是只返回值?

 <form name="frmListSubmit" method="post" id="myform" onsubmit="return submit()">

<table cellpadding="2" cellspacing="0" border="0" id="tblMain" class="edit">
    <tr valign="top">
       <td>&nbsp;&nbsp;&nbsp;</td>
       <td>
        <SELECT id="s" size="10" name="source" multiple>
        <?php 
        while($row = mysql_fetch_assoc($getEmployeeList))
        {
        ?>
            <option name="list" value="<?php echo $row['id'];?>"><?php echo $row['name']; ?></option>
       <?php 
        }
       ?>

      </td>
      </SELECT>

      <td valign="center">
          <a href="#" onclick="listbox_moveacross('s', 'd')" style="color:#FFF">&gt;&gt;</a>
      <a href="#" onclick="listbox_moveacross('d', 's')" style="color:#FFF">&lt;&lt;</a>
      </td>
      <td>
      <SELECT id="d" size="10" name="destination" multiple>
          <option name="list" value="">&nbsp;</option>
      </SELECT>
    <input type="submit" name="submit" value="submit" />
     </td>
       </tr>
</table>

</form>

这里是javascript代码:

function listbox_moveacross(sourceID,destID)
{
var src=document.getElementById(sourceID);
var dest=document.getElementById(destID);
for(var count=0;count<src.options.length;count++)
{
    if(src.options[count].selected==true)
    {
        var option=src.options[count];
        var newOption=document.createElement("option");
        newOption.value=option.value;
        newOption.text=option.text;
        newOption.selected=true;
        try
        {
            dest.add(newOption,null);src.remove(count,null);
        }
        catch(error)
        {
            dest.add(newOption);src.remove(count);
        }

        count--;
        }
    }
}

function listbox_selectall(listID,isSelect)
{
var listbox=document.getElementById(listID);
for(var count=0;count<listbox.options.length;count++)
{
    istbox.options[count].selected=isSelect;
}
}

function submit() 
{
    listbox_selectall('d', true);
    return true;
 }

我在PHP中有这样的东西,它在提交后只返回一个ID。

if(isset($_POST['submit']))
{
    echo $_POST['destination'];
}

1 个答案:

答案 0 :(得分:0)

这是奇怪的代码:

function listbox_selectall(listID,isSelect)
{
    var listbox=document.getElementById(listID);
    for(var count=0;count<listbox.options.length;count++)
    {
        istbox.options[count].selected=isSelect;//<-- ?
    }
}

也许,你想说:

listbox.options[count].selected=isSelect;

你说,只有1个来自“目的地”的值被提交给PHP。要允许提交多个值,请将[]添加到<select>-s

的名称中
<SELECT id="s" size="10" name="source[]" multiple>

<SELECT id="d" size="10" name="destination[]" multiple>

此外,无需为选项使用name属性。你不要在任何地方使用它。