我有一个这样的表格
<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代码来自动触发吗? 感谢
答案 0 :(得分: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,它有点复杂但是现在越来越多的人正在使用它,这是一种很好的做法。如果您想看一个这样的例子,请告诉我。
答案 1 :(得分: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>
答案 2 :(得分:0)
您可以使用AJAX(异步Javascript和XML)。如果你使用jQuery库,这里有一些如何设置它的例子: http://api.jquery.com/jQuery.post/
答案 3 :(得分: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,
...
});
});