同名无线电领域

时间:2011-04-10 18:17:50

标签: php html firefox http-post

对不起,但我不知道这叫什么,所以我会试着解释一下。

使用HTML表单,您可以使用相同名称的输入字段,并为每个字段指定自动分配键,例如:

<form action="somepage" method="post">
<input type="text" name="phone[]" />
<input type="text" name="phone[]" />
<input type="submit" />
</form>

提交此表单时,服务器通过POST接收数据。

作为关联数组,它看起来像这样:

Array(
[phone] => Array ( [0] => 123456789 [1] => 987654321 )
)

自动给出键0,1。

你会如何对无线电领域做同样的事情?

<input type="radio" name="option[]"/>
<input type="radio" name="option[]"/>

将两个字段视为一个字段(应该如此)并且不给它唯一的密钥...

4 个答案:

答案 0 :(得分:0)

可以在字段名称中指定数组键。

<input type="radio" name="option[radiooption1]" />

我相信它也适用于数字键,但我还没有测试过。有关详情,请参阅http://php.net/manual/en/faq.html.php

答案 1 :(得分:0)

单选按钮不能作为一个数组发布,你只会发布一个值,所以我没有看到给它一个索引有什么帮助。即使你像这样手动广告索引

 <input type="radio" name="option[1]" />
 <input type="radio" name="option[2]" />

你仍然只能在选项数组中获得一个项目

在上面的示例中,单选按钮无法正常工作,不再像单选按钮一样,它们每个都是单独的无线电,请参阅this DEMO

我的观点是,单选按钮是元素的选择,您可以为用户提供多种选择,允许他们只选择一个,因此发布与选择的单选按钮相关的任何其他数据是没有意义的,因为您只关心是有选择的。

答案 2 :(得分:0)

就HTML而言,具有相同名称的字段只是具有相同名称的字段。单选按钮是一种特殊情况,因为共享名称使它们成为组的一部分,并且只能选择一个。

在大多数表单处理库中,您可以从多个元素中获取具有相同名称的数据。

在PHP中,如果名称以[]结尾(或[something]表示具有预定义索引的数组),则只能将数据显示为数组。

只有选中的单选按钮才能成功,并且只能检查组中的一个单选按钮(即单选按钮的位置)。

如果您希望用户选择多个选项,请使用复选框。如果您为这些复选框指定相同的名称并以[]结束,那么PHP将在单个数组中获取已选中复选框的所有值。

答案 3 :(得分:0)

我在VueJS中做了类似的事情,我复制了一组设置问题的字段集x次。我需要将php作为数组处理的值,因此名称属性为name_x[] name_y[]等。

这导致重复的单选按钮出现问题,只允许在所有实例中回答字段集问题

我发现如果我将fieldset的索引添加到输入名称而不是将数组留空,那么它会在后端提供相同的结果,现在可以在前端工作。

使用索引(0,1,2...)

宽松示例,而不是留空[]

<fieldset v-for="(question,index) in questions">
  <label> question </label>
  <input name="question[index]" type="radio" value="yes">
  <input name="question[index]" type="radio" value="no">
</fieldset>