【问题标题】:How to name multiple selects for form submit如何为表单提交命名多个选择
【发布时间】:2015-12-17 23:23:13
【问题描述】:

当我有多个设置为 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' ] 
}

【问题讨论】:

    标签: html node.js forms express submit


    【解决方案1】:

    由于多选可以发送0–n个结果,因此无法根据值在数据中的位置来区分多个同名控件。

    您需要在名称或所有值中添加一些识别标记。

    name="rowId-product[name]"
    

    ... 可能是最简单的。 (其中 rowId 是添加到其中每个控件名称的行的标识符)。

    【讨论】:

    • 这意味着我必须测试每个属性是否存在?像 1-product 存在吗? 2-产品存在吗?等等……
    • 这实际上取决于您的表单数据解析器的工作方式,但可能类似于var n = 0; while ( (n++ + "-product") in myFormData ) { ... }
    猜你喜欢
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2021-06-27
    • 1970-01-01
    • 2014-07-10
    • 2015-02-22
    相关资源
    最近更新 更多