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