如何命名表单提交的多项选择



当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是在其中每个控件的名称前面加上的行的标识符)。

最新更新