在Chrome和IE中,以下代码在单击Anchor标记时弹出表单(模式框ID“modalContent”,表单ID为“DL”)并向表单添加“OnSubmit”。提交表单后,它将通过Javascript导航到所请求的PDF,并运行一些ASP以发送附有其详细信息的电子邮件。
<script language="javascript">
function downloadAnyway(link) {
$('#DL')[0].setAttribute('ONSUBMIT', 'return checkform("' + link + '")');
$('#modalContent').modal();
}
function checkform(navName) {
window.open(navName);
$.modal.close();
}
</script>
<!-- link to download a product guide -->
<a href='javascript:downloadAnyway("downloads/ProductGuide.pdf")');">Product Guide</a>
<div id="modalContent">
<form id="DL" action="contactusprocessNew2.asp" method="post" name="contact" >
<div align="center">
<input type="image" src="templates/default/images/submit_download.gif" class="imagebutton" value="submit" />
</div>
</form>
</div>
这在IE和Chrome中运行良好,在Firefox中,Javascript onsubmit有效,但asp的动作永远不会触发。如果我删除了javascript,则asp会按预期触发。
因此,动态添加“onsubmit”后,FireFox中的最终形式如下所示:
<form id="DL" action="contactusprocessNew2.asp" method="post" name="contact" onsubmit="return checkform("downloads/ProductGuide.pdf")">
onsubmit触发,在另一个标签中打开产品指南,然而,ASP Action永远不会触发。这里还有更多内容,比如我们写一个cookie,确保我们不会在每次使用我们的下载时都要求客户下载,但是,我已经删除了我认为在问题域之外的任何内容。
在asp中,我已经摆脱了所有代码并放了一个简单的response.redirect来查看它是否会触发并确保ASP中没有任何内容。
知道如何让它在FireFox中运行吗?
更新:
我已经用'正确'的jquery提交连线取代了onsubmit事件连线,替换了下面的第一行,第二行。表单上的asp仍然不起作用。
//$('#DL')[0].setAttribute('ONSUBMIT', 'return checkform(\'' + link + '\')');
$('#DL').submit(function checkform() {
$.modal.close();
window.open(link);
return true;
});
更新2
是的,这是因为在ASP触发之前模态弹出CLOSES。如果我们注释掉$ .modal.close()行;然后asp按预期发射。在Chrome和IE中,javascript和ASP必须同时触发,在Firefox中,javascript会触发“隐藏”div与“modelContent”并且asp无法再触发。所以这是真正的问题......现在如何解决它......