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

发布于 2024-08-12 20:50:08 字数 740 浏览 2 评论 0原文

我想

<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) 的选择框直到失败?看起来有点脏。

我应该能够提交“删除此选择框”或“创建新选择框”的操作,因此我需要某种方法来区分选择框。

I'd like to replace a multiple select box like:

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

with an arbitrary number of simple select boxes:

<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>  

Is there any way to send and retrieve via POST an array of select boxes or should I try to access every select box named options(number) until it fails? Seems a bit dirty.

I should be able to submit an action to "delete this select box" or "create new select box" so I need some way to distinguish the select boxes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执妄 2024-08-19 20:50:08

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

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>

Just give the select elements the same name.

HTML forms have no concept of "an array". Every form handling library that handles arrays of input data generates them from a name having multiple values:

foo=bar&foo=baz&aDifferentField=fizzbuzz

This is what a multiple select (named foo) with two values selected will generate (when there is 'aDifferentField' in the form too).

Sometimes there are provisos involved.

Perl's CGI.pm needs the request for the data to be in list context:

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

PHP requires the name to end with the characters '[]'

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

… but it all comes down to the names being the same (although the ids must still be different).

As for the deletion:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文