当multiple select设置为true时,如何在表单中命名选择。
这里有一个例子:
<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>
现在,如果我为每个产品选择多个税。我如何知道为每行选择了哪些税款,因为所有选择的项目都将合并到一个数组中。
这是我会得到的帖子的正文:
{
'product[name]': [ 'test1', 'test2', 'test3' ],
'product[taxes]': [ '1', '2', '1', '3', '2' ],
'product[price]': [ '1', '2', '3' ]
}
由于多选可以发送0–n结果,因此无法根据值在数据中的位置来区分具有相同名称的多个控件。
您需要在名称或所有值中添加一些标识令牌。
name="rowId-product[name]"
…可能是最简单的。(其中rowId是在其中每个控件的名称前面加上的行的标识符)。