我有一个带有两个"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
时,表单将与target="somwhere"
一起提交给index.php
。在服务器端,我从文本区域生成具有值的pdf,这个pdf在新选项卡中打开(target="somwhere"
是在新选项卡打开pdf的一些技巧)。
然而,现在我还需要在#doc_send_email
点击上提交表格。在这种情况下,我还需要生成PDF,但它应该发送到提供的电子邮件,然后它应该在同一页面上显示确认消息。因此:
在
index.php
中,我需要以某种方式区分是什么导致了表单提交(pritn_pdf_btn
)还是(doc_send_email
)。如果我能够在#pritn_pdf_btn.click
和#doc_send_email.click
上设置一些变量,然后通过POST
发送,这将有所帮助。但我找不到解决办法。我需要一些方法来提交有
target="somwhere"
和没有target="somwhere"
的表格。也许,在#pritn_pdf_btn.click
和#doc_send_email.click
上有某种方法可以提交有目标和无目标的表格?
使用像这样的多个提交按钮更容易做到:
<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>
然后在后端(假设是PHP)
if($_POST['email'])
sendEmail();
else
generatePDF();
或者使用JS:
<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>
然后在后端(假设是PHP)
if($_POST['action']=='email')
sendEmail();
else
generatePDF();