2008-12-18 59 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']

相關問題