在表格的每一行中发布新表单的正确方法?

时间:2016-08-07 04:21:56

标签: html forms html-table

我有一个有桌子的页面。在表格的每一行中,都有关于在线杂货配送订单的数据。在每一行的末尾,有一个提交按钮,关于要对订单执行的操作,表单在那里结束。新表单从下一行< tr>

开始

我应该把< form>放在哪里?和< / form>标签?我应该把< form>在每个< tr>之前和< / form>在< / tr>之后或者我应该在第一个数据单元中引入它们< td>每一行并在最后一次< td>?

中关闭

我的意思是,页面可能在两种方式都可以正常运行,但是什么是"正确的"这样做的方式?现在,mozilla代码视图以红色显示表标记。

这就是它现在的样子。 enter image description here

这是我用来为每个表行动态生成新表单的php代码的相关部分。我发布这个仅仅是为了参考,因为这在这里根本不重要。我的问题是基于HTML的,而不是基于PHP的。

for($i=0;$i<$count;++$i){
    $res.='<form action="" method="post">' ."\n" .'<input type="hidden" name="orderid" value="' .$orders[$i]->idcode .'" />';
    $res.="$nt<tr><td align=\"center\">" .$orders[$i]->display("pe","</td><td align=\"center\">") ."</td>$nt\t<td align=\"center\"><select name=\"agent\">$alistcode</select></td>$nt\t<td align=\"center\"><select name=\"vendor\">$vlistcode</select></td>";
    $res.="$nt\t<td align=\"center\"><input type=\"submit\" value=\"PROCESS\" /></td>\n</tr>\n</form>\n";
}
$res.="</table>";
echo $res;

2 个答案:

答案 0 :(得分:5)

HTML5为您的问题提供了不错的解决方案。它的名称是form属性。只需将表单放入最后<td>并从其他输入中引用其id即可。见例。

<table>
    <tr>
        <td>
            <input type="text" name="inp1" form="form1" />
        </td>                         <!-- ^^^^  ^^^^^ -->
        <td>
            <form id="form1" method="get" action="/">
             <!-- ^^  ^^^^^ -->
                <input type="submit" name="submit1" value="submit" />
            </form>
        </td>
    </tr>
    <tr>
        <td>
            <input type="text" name="inp2" form="form2" />
        </td>
        <td>
            <form id="form2" method="get" action="/"><input type="submit" name="submit2" value="submit" /></form>
        </td>
    </tr>
</table>

答案 1 :(得分:0)

如果可以选择使用javascript,则可以不使用<form>标签吗? 在本示例中,我使用jQuery,数据被发布到自身($.post()的第一个参数)。

表格

<table>
        <tbody>
            <tr>
                <td><input name="inputfield[]" type="text" value="input1" /></td>
                <td><select name="selectfield[]">
                    <option selected value="select1-option1">select1-option1</option>
                    <option value="select1-option2">select1-option2</option>
                    <option value="select1-option3">select1-option3</option>
                </select></td>
                <td><a class="submit">Update</a></td>
            </tr>
            <tr>
                <td><input name="inputfield[]" type="text" value="input2" /></td>
                <td><select name="selectfield[]">
                    <option selected value="select2-option1">select2-option1</option>
                    <option value="select2-option2">select2-option2</option>
                    <option value="select2-option3">select2-option3</option>
                </select></td>
                <td><a class="submit">Update</a></td>
            </tr>
            <tr>
                <td><input name="inputfield[]" type="text" value="input3" /></td>
                <td><select name="selectfield[]">
                    <option selected value="select3-option1">select3-option1</option>
                    <option value="select3-option2">select3-option2</option>
                    <option value="select3-option3">select3-option3</option>
                </select></td>
                <td><a class="submit">Update</a></td>
            </tr>
        </tbody>
    </table>

脚本

$(".submit").on("click", function(){
    var row = $(this).parents("tr");
    $.post("", row.find("input, select, radio").serialize(), function(data){ console.log(data); });
});

JSFiddle