2012-01-31 93 views
2

我有这样如何在提交表单时触发另一个表单。?

<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代码来自动触发它? 感谢

+2

“触发”你的意思是显示/显示或提交? – Stefan 2012-01-31 15:40:44

+0

你想提交这两个表单,还是第二个而不是第一个? – 2012-01-31 15:40:59

+0

@Stefan提交.... – user1091558 2012-01-31 16:02:21

回答

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> 

的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,这是一个稍微复杂一些,但它是很好的做法,因为越来越多的人现在使用它。如果你想看到这个例子,请让我知道。

+0

谢谢。是的,如果你能证明它会很棒的 – user1091558 2012-01-31 16:04:29

+0

我同意。使用AJAX,您可以提交这两种表单,但它确实更简单,更容易创建包含所有字段的独特表单,并在需要时隐藏/显示通讯部分。 – 2012-01-31 16:14:36

0

只使用一个形式和使用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, 
     ... 
    }); 
}); 
2

使用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> 
相关问题