几个简单的选择框来替换HTML中的多选框

时间:2009-11-27 12:07:53

标签: html webforms html-select

我想替换多个选择框,如:

<select multiple="multiple" name="options">  
<option value="option1">option1</option>  
<option value="option2">option2</option>  
...  
</select>

使用任意数量的简单选择框:

<select name="options1">  
<option value="option1">option1</option>  
<option value="option2">option2</option>  
...  
</select>  

<select name="options2">  
<option value="option1">option1</option>  
<option value="option2">option2</option>  
...  
</select>  

有没有办法通过POST发送和检索一组选择框,或者我应该尝试访问名为options(number)的每个选择框,直到它失败?看起来有点脏。

我应该可以提交“删除此选择框”或“创建新选择框”的操作,因此我需要一些方法来区分选择框。

1 个答案:

答案 0 :(得分:1)

只需为选择元素指定相同的名称。

HTML表单没有“数组”的概念。每个处理输入数据数组的表单处理库都是从具有多个值的名称生成它们:

foo=bar&foo=baz&aDifferentField=fizzbuzz

这就是选择了两个值的多重选择(名为foo)将生成(当形式中也存在'aDifferentField'时)。

有时会涉及附带条件。

Perl的CGI.pm需要数据在列表上下文中的请求:

my @foos = $cgi->param('foo');

PHP要求名称以字符'[]'

结尾
name="foo[]"
foo[]=bar&foo[]=baz&aDifferentField=fizzbuzz

...但这一切都归结为名称相同(虽然ID必须保持不同)。

至于删除:

<label for="foo5">Group 5</label>
<select name="foo" id="foo5">
    <option value="delete_foo5">Delete this group</option>
    <option value="1">1</option>
    <option value="2">2</option>
</select>