2008-12-18 21 views
6

我在HTML表单上有一个提交按钮的列表框。列表框已启用多项选择。我可以在列表框中选择多个值,但我不知道如何确定提交表单时选择了哪些值。此外,我正在使用JavaScript动态地将用户生成的值添加到列表框中,我希望能够在表单提交时分辨两件事:如何发布具有多个选定值的HTML列表框的选择

  1. 用户添加到框中的选项是什么?
  2. 用户在框中选择了什么值?

这可能吗?谢谢。

+2

这是可能的...但你使用什么服务器端语言?因为这似乎是你的问题的大部分是关于.. – Jack 2008-12-18 21:52:23

回答

4

下面你会找到一个页面的例子。

需要注意的是:

  • select元素(以及任何形式的元素)需要一个名字被包含在后。
  • 只会选择select元素中的选定选项。

用户在框中选择了什么值?

当用户提交表单时,只有选定的值将被发送到服务器。根据您在服务器上使用的语言,有不同的访问方式。

用户添加到框中的选项是什么?

如前所述,您只能看到选择了哪些选项。但是,您如何区分您的选项和用户选项?这取决于您发送用户的数据。普遍的答案就是你没有发回的价值。但是,这可以根据您的数据进行简化。由于选项同时具有值​​和文本属性,因此可以使用数值作为预生成值的一种方式。这样你的值将在回复中是数字,用户值将是一个文本字符串。这种方法假设你的用户不会输入一个数字值。另一种方法是添加前缀到所有用户生成的值(记住你都有一个值,为所有选项的文本字段)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <title>Test of select box</title> 
    <script type="text/javascript"> 
     function addOpt(e) { 
     var o=document.createElement("option"); 
     //o.value= -e.options.length; 
     o.text = "Test " + e.options.length; 
     o.selected=true; 
     e.add(o,null); 
     } 
    </script> 
    </head> 
    <body> 
    <form method="post" action="mypage.html"> 
     <input type="button" onclick="addOpt(this.form.myselect)" value="Add option"/> 
     <br/> 
     <select id="myselect" name="mydata" multiple="multiple" size="10"> 
     <option value="0">Test 0</option> 
     <option value="1">Test 1</option> 
     <option value="2">Test 2</option> 
     </select> 
     <br/> 
     <input type="submit"/> 
    </form> 
    </body> 
</html> 
+2

可以和可能应该完成没有JavaScript使用[] – aleemb 2009-02-15 01:10:50

+0

@aleemb:如何添加[]答案“什么是用户添加到框中的选项”和“用户在框中选择了什么值”?如果你真的看看上面的JavaScript,它只会在选择框中添加选项,表明文本将被用作值。 – some 2009-02-15 04:43:40

36

通过与尾随方括号,PHP(以及可能的其他服务器语言命名你select )将会把数据放到一个数组

例如:

<form action="process.php" method="post"> 
    <select name="multiSelects[]" multiple="multiple" size="5"> 
    <option value="0">Zero</option> 
    <option value="1">One</option> 
    </select> 
    <input type="submit" /> 
</form> 

的选择将可在阵列中$_POST['multiSelects']

相关问题