如何在提交表单时触发另一个表单.?

Gir*_*iri 2 html javascript php forms triggers

我有这样的表格

<form action="formprocess1.php">
<input type="text" name="firstname">
<input type="text" name="email">
<input type="checkbox" name="newsletter" value="1">
<input type="submit" name="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

如果在第一个表单上选中了复选框,我想触发另一个表单

<form action="newsletter.php">
<input type="text" name="firstname">
<input type="text" name="email">
<input type="submit" name="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

谁能给我一些PHP代码或javascript代码来自动触发它?谢谢

Ben*_*rey 6

您不能一次触发两个表单,因为您只能一次向PHP页面发送一个请求,除非您使用的是AJAX.

这里的解决方案是隐藏第二个表单,除非附加了复选框,并在选中复选框时将其显示为第一个表单的一部分.

您是否希望我演示如何做到这一点?

更新

在更改复选框状态时显示/隐藏新闻稿表单:

HTML:

<form>
    <input type="text" name="firstname">
    <input type="text" name="email">
    <input type="checkbox" name="newsletter" value="1">
    <div id="newsletter" style="display:none;">
         <input type="text" name="news-firstname">
         <input type="text" name="news-email">
    </div>
    <input type="submit" name="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

Javascript(jQuery):

// Set the onchange event for the checkbox
$('input[name="newsletter"]').change(function(){
    // Test is checkbox is checked
    if($(this).is(':checked')){
        // If it is checked then show the newsletter
        $('#newsletter').show();
    }else{
        // If it is not checked then hide the news letter
        $('#newsletter').hide();
    }
})
Run Code Online (Sandbox Code Playgroud)

我没有测试过上面但它应该可以工作,如果有任何错误,请告诉我,我会修复它们.我已经明确提出意见来解释每个步骤的作用.

在PHP脚本中,您必须进行测试以查看是否选中了复选框,然后进行相应的验证.否则,您将始终收到新闻通讯信息.仅仅因为它们被隐藏并不意味着它们没有被提交.

我建议将两个单独的PHP脚本合并到一个文件中,这将使您更加简单.

另一种选择是AJAX,它稍微复杂一点,但是现在越来越多的人正在使用它,这是一种很好的做法.如果您想看一个这样的例子,请告诉我.