我有一个表单,我需要有两种方式提交表单。第一种方法是使用标准提交按钮。这很好用。应该首先打印页面,然后显示警报并最终提交表单。第二种方式是我需要帮助的地方。
对于第二种方式,我在窗体中有一个调用“printpage”功能的按钮。此功能打印页面,显示警报,然后应该提交表单。它提供除提交表格之外的所有内容。任何帮助搞清楚为什么会受到赞赏。
htm页面的代码如下所示。
<body>
<script type="text/javascript">
function printpage()
{
if (MbrForm_Validator(document.forms["MbrForm"]))
{
window.print();
alert("Thank you for your support of the Friends. Please mail your form and check to the address shown on the printed page.");
//***********************************************************************************
//***********************************************************************************
//this is the line of code that does not work for me
document.forms["MbrForm"].submit();
//***********************************************************************************
//***********************************************************************************
}
}
function MbrForm_Validator(theform)
{
//removed for brevity
}
</script>
<h1>Membership Application</h1>
<p style="margin:0px;text-size:9px;"><sup class="required">*</sup>Denotes required information</p>
<form id="MbrForm" name="MbrForm" method="post" action="membertest.php" onsubmit="return MbrForm_Validator(this)" target="_blank">
为简洁起见,已删除表单本身的内容。仅保留SUBMIT和PRINT按钮
<table width="75%" border="0" align="center" cellspacing="5" class="displayonly">
<caption style="border-bottom:black solid 1px;">
How Would You Like to Pay?
</caption>
<tr>
<td width="49%" valign="top">
With a check<br />
Click the "Print" button below to print this form for mailing in with your check.
</td>
<td width="51%" valign="top">
On-Line with a Credit Card<br />
Click the "Submit" button below to submit your information and pay using a credit card or PayPal.
</td>
</tr>
<tr>
<td>
<div align="left">
<input type="button" name="btnprint" id="btnprint" value="Print" onclick="printpage()" />
</div>
</td>
<td>
<div align="left">
<input type="submit" name="submit" id="submit" value="Submit" />
</div>
</td>
</tr>
</table>
</form>
<div class="printonly">
<p>
<br /><br /><br /><br /><br />
<hr />
Mail with your check to:<br />
</p>
</div>
</div>
</div>
</body>
答案 0 :(得分:2)
<input type="submit" name="submit" id="submit" value="Submit" />
这是一个问题。删除name =“submit”,它应该工作。每个具有name属性的表单元素也在表单对象中创建一个属性。此元素创建一个属性“submit”,它覆盖表单的提交方法。
答案 1 :(得分:0)
我终于找到了这个问题的答案,部分归功于之前的几条评论。
解决方案是使两个按钮“提交”类型按钮具有相同的名称。
<input type="submit" name="submit" id="submit" value="Submit" />
<input type="button" name="btnprint" id="btnprint" value="Print" onclick="printpage()" />
到
<input type="submit" name="btntype" value="Submit" />
<input type="submit" name="btntype" value="Print" onclick="printpage()" />
然后在表单处理代码中检查“btntype”的值,如果value =“Submit”则执行A,如果value =“Print”则执行B. “打印”提交按钮的onclick事件调用printpage函数,并在表单正常提交之前完成所有内容。