繁体   English   中英

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

[英]How to trigger another form while submitting a form.?

我有这样的表格

<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>

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

<form action="newsletter.php">
<input type="text" name="firstname">
<input type="text" name="email">
<input type="submit" name="submit">
</form>

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

您不能一次触发两个表单,因为您只能一次向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>

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();
    }
})

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

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

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

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

使用Jquery库..这样的东西..我刚刚为你做了所有的代码,但你需要添加样式和一些AJAX的东西提交,它的工作原理:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<script type="text/javascript">

//this is for Jquery 1.6+
$(function() {
    $("#newscheck").change(function() {
       if ($("#newscheck").prop("checked", true))
           $("#newsletterForm").show("slow");
     }); //End of $("#newscheck").change
}); //End of $(function() {

</script>
</head>

<body>
<form action="formprocess1.php" id="form1">
<input type="text" name="firstname">
<input type="text" name="email">
<input type="checkbox" id="newscheck" name="newsletter" value="0">
<input type="submit" name="submit">
</form>

<form action="newsletter.php" id="newsletterForm" style="display:none;">
<input type="text" name="firstnameNews">
<input type="text" name="emailNews">
<input type="submitNews" name="submitNews">
</form>
</body>
</html>

您可以使用AJAX(异步Javascript和XML)。 如果您使用jQuery库,以下是一些如何设置它的示例: http//api.jquery.com/jQuery.post/

仅使用一个表单并使用jquery来实现使用不同脚本来处理提交事件的目标

<form id="form">
<input type="text" name="firstname">
<input type="text" name="email">
<input id="ckType" type="checkbox" name="newsletter" value="1">
<input type="submit" name="submit">
</form>

JavaScript的

$("#form").submit({
   var urlstr;
   if($("#ckType").attr("checked")){
      urlstr = "newsletter.php";
   }else{
      urlstr = "formprocess1.php";
   }
   $.ajax({
      url:urlstr,
      ...
   });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM