2012-11-11 67 views
0

我有两个选择元素(列表框)和两个按钮的HTML表单从一个列表框移动到另一个数据(使用JavaScript):如何从PHP中的HTML select元素获取所有值?

<form action="page.php" method="post"> 
     <select name="select1" multiple="yes"> 
      <option value="1">Left1</option> 
      <option value="2">Left2</option> 
      <option value="3">Left3</option> 
     </select> 
     <input type="button" value="--&gt;" onclick="moveOptions(this.form.select1, this.form.select2);" /><br /> 
     <input type="button" value="&lt;--" onclick="moveOptions(this.form.select2, this.form.select1);" /> 
     <select name="select2" multiple="yes"> 
      <option value="4">Right1</option> 
      <option value="5">Right2</option> 
     </select> 
     <input type="submit" name="submit" value="Submit"> 
</form> 

当我点击提交按钮,我想所有值列表存储在列表框中。

foreach ($_POST['select1'] as $value) 
    { 
     //save data to database 
    } 

这只是得到一个选定的值(如果有的话)。

我设法通过在select的名称后面加上[]来获得多个值(如果它们被选择)。

<select name="select1[]" multiple="yes"> 

但是,这仍然没有得到未选定的值,这样移动JavaScript函数的数据也不起作用。

+0

您是否试图使用所选择的值将它们保存到数据库中并分配哪些被选中或未选定?如果是这样,你做错了 –

+0

不。我想要做的是:有两个选择元素,你可以将数据从一个移动到另一个,当你点击提交按钮时,我想保存选择列表框中的哪个值。 –

回答

1
var select1 = document.getElementById('select1'); 
var values = new Array(); 

for(var i=0; i < select1.options.length; i++){ 
    values.push(select1.options[i].value); 
} 

从页面到页面传递数组,go here

1

我不知道你为什么要做到这一点,但你可以在提交表单 之前调用此jQuery代码和数组值添加到隐藏的输入去张贴

$("#Submit_button").click (function() { 
     var arr = new Array; 
     $("#select1 option").each (function() { 
      arr.push ($(this).val()); 
     }); 
     $(#hidden_input).val(arr); 
    }); 
+0

This帮我解决了我的问题。谢谢。 – bowlerae

4

提交表单时只需选择所有选项前:

document.getElementsByName('submit')[0].onclick = function() { 
    var s1 = document.getElementsByName('select1')[0]; 
    for(var i=0; i < s1.options.length; i++){ 
     s1.options[i].selected = true; 
    } 
}; 
+0

是的,那可以工作。唯一的问题是我仍然无法将选择元素从select移动到另一个元素,因为如果我在select的名称后面加上'[]''moveOptions'函数不起作用。 –

+0

可以通过使用以下内容中选择与他们括号形式元素:'moveOptions(this.form.elements [“SELECT1 []”],this.form.select2);'或者只是切换选择到getElementsByName:'moveOptions (document.getElementsByName('select1 []')[0],this.form.select2);' – PieSub