将HTML表单嵌套在一个表元素中

时间:2014-05-22 05:42:44

标签: html html5 html-form html-formatting

我希望用桌子嵌套2个单独的表格。我将简要介绍一下目前的情况。

<form action="action1">
<table>
<tr>
<td>...</td>
<td><input type="checkbox" ....></td>
<td>Tag1</td>
</tr>
<tr>
<td>...</td>
<td><input type="checkbox" ....></td>
<td>Tag2</td>
</tr>
.
.
.
</table>
<input type="submit">
</form>

现在,对于每一行,我希望添加一个按钮,该按钮将位于名为action2的不同页面上。动作2需要的是知道对应于哪个标签(例如,Tag1,Tag2,....)被点击的按钮。 我想在每一行中添加以下元素。

<td><form action="action2"><input type="hidden" name="tag_" value="corresponding_tag_in_this_row" /><input type="submit"></form></td>

我正在以编程方式生成表,但是当我添加这个新列时,我注意到不允许在HTML中嵌套FORM元素。什么是解决这个问题的好方法?

action1需要复选框中的所有数据,而action2只需要知道该行的相应标记。 action2和action1可以获取彼此的数据,即,即使action1获取对应于action1和action2的数据,它也被编程为省略action2的数据,反之亦然。

我不想使用任何花哨的JavaScript。对纯HTML的建议将受到高度赞赏,因此没有浏览器兼容性问题。

4 个答案:

答案 0 :(得分:0)

您无法为不同的操作制作表单submit。您必须使用JavaScript并使每个按钮打开不同的页面或制作提交到不同页面的不同表单。例如。如果您想要button1提交到page1button2提交给page2,您应该将每个内容放在不同的表单中,并使用不同的action属性。< / p>

使用纯javascript的示例:

<script type="text/javascript">
    function sendForm(action) {
         MyForm.action = action;
         MyForm.submit();
    }
    ButtonOne.addEventListener(
        'click', 
        function() { sendForm('action_one.php') }, 
        false);
    ButtonTwo.addEventListener(
        'click', 
        function() { sendForm('action_two.php') }, 
        false);
    ButtonThree.addEventListener(
        'click', 
        function() { sendForm('action_three.php') }, 
        false);
</script>

稍后在您的代码中:

<form id="MyForm">
    <input …/>
    …
    <button id="ButtonOne" />
    <button id="ButtonTwo" />
    <button id="ButtonThree" />
</form>

答案 1 :(得分:0)

根据您选择的语言,您可以将其全部放在一个表单中,发布到同一个文件,然后在该文件中根据按下的按钮执行某些操作。

例如在php中,您可以执行以下操作:

<form action="processing.php" method="post">
    ...
    <input type="submit" name="action1" value="Do Action 1" id="action1Button">
    <input type="submit" name="action2" value="Do Action 2" id="action2Button">
</form>

然后在processing.php中:

    if (!empty($_POST['action1'])) {
    // DO ACTION 1 STUFF
    // Only look for the inputs etc that relate to action 1

    }
    // could be an if/else if there are only 2
    if (!empty($_POST['action2'])) {
    // DO ACTION 2 STUFF
    // Only look for the inputs etc that relate to action 2
    }

答案 2 :(得分:0)

基于此:

  

action1需要复选框中的所有数据,而action2只需要知道该行的相应标记。

您不需要action2的表单。而是使用简单的a链接并以编程方式构造相应的URL。

例如:

<td><a href="action2?tag={corresponding_tag_in_this_row}">Do Action 2</a></td>

{corresponding_tag_in_this_row}替换为您正在使用的langauge或模板语言以及该行的相应标记。鉴于你需要这个只是

  

[打印]与点击的按钮对应的标签

这应该没有任何问题,将减少所需的HTML数量,并允许用户为该特定标记添加书签。

答案 3 :(得分:0)

请按以下步骤操作: 1.使用方法(如post)将结果提交到操作页面 2.然后使用if .... else ...子句指定标题位置并重定向到指定页面,如下所示:

if($_POST['ACTION1'])
{
header('Location: http://www.example.com/');
}
elseif($_POST['ACTION2'])
{
header('Location: http://www.example2.com/');
}