如何为表单提交命名多个选择
How to name multiple selects for form submit
当我有多个 select 且 multiple 设置为 true 时,如何在我的表单中命名我的 select。
举个例子:
<form action="/product/create" method="post">
<table>
<tr>
<td>
<input type="text" name="product[name]">
</td>
<td>
<select name="product[taxes]" multiple>
<option value="1">Tax A</option>
<option value="2">Tax B</option>
<option value="3">Tax C</option>
</select>
</td>
<td>
<input type="text" name="product[price]">
</td>
</tr>
<tr>
<td>
<input type="text" name="product[name]">
</td>
<td>
<select name="product[taxes]" multiple>
<option value="1">Tax A</option>
<option value="2">Tax B</option>
<option value="3">Tax C</option>
</select>
</td>
<td>
<input type="text" name="product[price]">
</td>
</tr>
<tr>
<td>
<input type="text" name="product[name]">
</td>
<td>
<select name="product[taxes]" multiple>
<option value="1">Tax A</option>
<option value="2">Tax B</option>
<option value="3">Tax C</option>
</select>
</td>
<td>
<input type="text" name="product[price]">
</td>
</tr>
</table>
现在,如果我 select 对每个产品征收多项税。我怎么知道每一行的哪些税是 selected,因为所有 selected 的项目都将合并到一个数组中。
这是 post 的主体,我会得到:
{
'product[name]': [ 'test1', 'test2', 'test3' ],
'product[taxes]': [ '1', '2', '1', '3', '2' ],
'product[price]': [ '1', '2', '3' ]
}
由于多个select可以发送0–n个结果,所以没有办法根据值的位置来区分同名的多个控件在数据中。
您需要向名称或所有值添加一些标识标记。
name="rowId-product[name]"
… 可能是最简单的。 (其中 rowId 是添加到其中每个控件名称之前的行的标识符)。
当我有多个 select 且 multiple 设置为 true 时,如何在我的表单中命名我的 select。
举个例子:
<form action="/product/create" method="post">
<table>
<tr>
<td>
<input type="text" name="product[name]">
</td>
<td>
<select name="product[taxes]" multiple>
<option value="1">Tax A</option>
<option value="2">Tax B</option>
<option value="3">Tax C</option>
</select>
</td>
<td>
<input type="text" name="product[price]">
</td>
</tr>
<tr>
<td>
<input type="text" name="product[name]">
</td>
<td>
<select name="product[taxes]" multiple>
<option value="1">Tax A</option>
<option value="2">Tax B</option>
<option value="3">Tax C</option>
</select>
</td>
<td>
<input type="text" name="product[price]">
</td>
</tr>
<tr>
<td>
<input type="text" name="product[name]">
</td>
<td>
<select name="product[taxes]" multiple>
<option value="1">Tax A</option>
<option value="2">Tax B</option>
<option value="3">Tax C</option>
</select>
</td>
<td>
<input type="text" name="product[price]">
</td>
</tr>
</table>
现在,如果我 select 对每个产品征收多项税。我怎么知道每一行的哪些税是 selected,因为所有 selected 的项目都将合并到一个数组中。
这是 post 的主体,我会得到:
{
'product[name]': [ 'test1', 'test2', 'test3' ],
'product[taxes]': [ '1', '2', '1', '3', '2' ],
'product[price]': [ '1', '2', '3' ]
}
由于多个select可以发送0–n个结果,所以没有办法根据值的位置来区分同名的多个控件在数据中。
您需要向名称或所有值添加一些标识标记。
name="rowId-product[name]"
… 可能是最简单的。 (其中 rowId 是添加到其中每个控件名称之前的行的标识符)。