2013-07-04 67 views
1

我有一個帶有兩個「a」鏈接的表單。兩者都應提交表格,但採用兩種不同的方式。以兩種不同的方式提交表格

這是我目前擁有的html。

HTML:

<form method="post" id="doc_form" target="somwhere"> 
<textarea name="doc_text"><?php echo $file; ?></textarea> 
      <input type="hidden" name="submitted" value="1" /> 
     </form> 
     <a id="doc_send_email" class="btn">SEND</a> 
     <a id="pritn_pdf_btn" onclick="document.getElementById('doc_form').submit();" class="btn">Print <span class="span_pdf">PDF </span></a>    

#pritn_pdf_btn用戶點擊,則表單被提交到index.phptarget="somwhere"。在服務器端,我使用textarea的值生成pdf,並在新選項卡中打開此PDF(target="somwhere"是在新選項卡中打開pdf的一些技巧)。

但是,現在我還需要在#doc_send_email點擊提交表單。在這種情況下,我還需要生成PDF,但它應該發送到提供的電子郵件,然後它應該在同一頁面上顯示確認消息。所以:

  1. index.php我需要以某種方式區分是什麼原因造成的形式提交(pritn_pdf_btn)或(doc_send_email)。如果我可以在#pritn_pdf_btn.click#doc_send_email.click上設置一些變量,然後通過POST發送它,這將有所幫助。但我找不到溶劑。

  2. 我需要一些方式來提交表格target="somwhere"和沒有target="somwhere"。大概在#pritn_pdf_btn.click#doc_send_email.click上有提交表單,有沒有目標?

+0

爲什麼不添加實際的提交元素?您可以給每個人一個不同的值,您可以讀取服務器端以確定正確的操作。但請注意,當用戶按下輸入時,表單可能沒有提交任何提交值。 – GolezTrol

回答

1

它更容易做到這一點與倍數提交按鈕這樣的:通過使用JS

<form method="post" id="doc_form" target="somwhere"> 
    <textarea name="doc_text"><?php echo $file; ?></textarea> 
    <input type="hidden" name="submitted" value="1" /> 
    <input type="submit" name="email" value="1" id="doc_send_email" class="btn" value="SEND"/> 
    <input type="submit" name="pdf" value="1" id="pritn_pdf_btn" class="btn" value="Print PDF"/> 
</form> 

然後在後端(asuming是PHP)

if($_POST['email']) 
    sendEmail(); 
else 
    generatePDF(); 

或者:

<form method="post" id="doc_form" target="_self"> 
    <textarea name="doc_text"><?php echo $file; ?></textarea> 
    <input type="hidden" name="submitted" value="1" /> 
    <input type="hidden" name="action" id="action" value="generate" /> 
</form> 
<a id="doc_send_email" onclick="document.getElementById('action').value='email';document.getElementById('doc_form').submit();" class="btn">SEND</a> 
<a id="pritn_pdf_btn" onclick="document.getElementById('action').value='generatePdf';document.getElementById('doc_form').target='somwhere';document.getElementById('doc_form').submit();" class="btn">Print <span class="span_pdf">PDF </span></a> 

然後在後端(asuming i t是PHP)

if($_POST['action']=='email') 
    sendEmail(); 
else 
    generatePDF(); 
+0

以及如何控制窗體「目標」部分。我希望pritn_pdf_btnI具有target =「somwhere」的形式,但是在doc_send_email上單擊我希望沒有任何目標的表單? (如果需要,我可以將「a」改爲「提交」,但如何能夠控制目標)? – renathy

+0

更新了我的回答,看看JS解決方案在提交之前如何更改目標,但不應該這樣做。你應該把pdf下載到同一個標籤中。 – Skatox