组合多种形式


Combine Multiple Forms

是否有办法将两种形式合并为一个动作?例如,在提交表单2时具有表单1的值。我尝试使用相同的name,但没有运气。

<form action='result.php' method='post' name='form' id='form_1'>
    <input name='value_1' placeholder='value_1' />
    <input name='value_2' placeholder='value_1' />
</form>
<form action='result.php' method='post' name='form' id='form_2'>
    <select name='value_3'>
        <option value='a'>a</option>
        <option value='b'>b</option>
    </select>
    <button type='submit'>Submit</button>
</form>

我想要得到value_1, value_2和value_3当提交按钮被按下。问题是,我不能在第二个表单上使用form属性,因为我的第二个表单是在多个页面上使用的模板,存储在一个单独的变量中。附近有别的地方吗?

我强烈建议您重新构建您的模板,以便它们可以相互结合使用。

但是,如果模板是固定的,那么您可以使用javascript拦截任何一个表单上的提交,从两个表单中获取数据,并提交一个新表单。

你可以这么做

<form action='result.php?action=form1' method='post' name='form' id='form_1'>
    <input name='value_1' placeholder='value_1' />
    <input name='value_2' placeholder='value_1' />
</form>
<form action='result.php?action=form2' method='post' name='form' id='form_2'>
    <select name='value_3'>
        <option value='a'>a</option>
        <option value='b'>b</option>
    </select>
    <button type='submit'>Submit</button>
</form>

在你的PHP文件中:

<?php
$action = $_GET['action'];
if($action === 'form1'){
    #do something
}else{
    #do something
}

找到解决方法。我用form='parent'代替form_2,用id='parent'代替form_1。缺点是现在我必须将每个表单命名为id='parent'

没有尝试过,我想如果我使用form='parent'的两种形式,然后做一个隐藏的<form id='parent>',我可能能够结合更多的形式。不完美……但至少它是工作的,与普通的HTML。