可多选的 select multiple 标记是 HTML 的一个构造,允许用户从一个列表中选择多个项目。这些项目接着被传递给该表单 action 中指定的处理程序。问题是它们都会被用同样的名字传递。例如:
<select name="var" multiple="yes">
|
每个被选项将这样被传递到表单处理程序:
var=option1
var=option2
var=option3
|
每个选项将覆盖前面一个
$var 变量的内容。解决方案是用 PHP 的“表单单元数组”特性。使用方法如下:
<select name="var[]" multiple="yes">
|
这将告诉 PHP 将
$var 当成数组对待,每个对 var[] 的赋值都会给数组增加一项。第一项将成为
$var[0],下一个是
$var[1],等等。可以用
count() 函数来测定选择了多少个项目,必要时可以用
sort() 函数来对选项的数组进行排序。
注意如果你在 JavaScript 中通过名字来引用单元,单元名字中的 [] 可能会造成问题。用表单单元中的数字序号来替代,或者将变量名用单引号括起来并用其作为单元数组的索引,例如:
variable = documents.forms[0].elements['var[]'];
|