0

在 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 操作永远不会触发。这里还有更多内容,比如我们编写了一个 cookie,以确保我们不会在客户每次使用我们的下载时都要求他们下载,但是,我已经删除了我认为超出问题域的任何内容。

在 asp 中,我已经摆脱了所有代码并放置了一个简单的 response.redirect 以查看它是否触发并确保 ASP 中没有发生任何事情。

知道如何让它在 FireFox 中运行吗?

更新:

我已经用“正确的”jquery submit wireup 替换了 onsubmit 事件 wireup,将下面的第一行替换为第二行。窗体上的 asp 仍然不起作用。

    //$('#DL')[0].setAttribute('ONSUBMIT', 'return checkform(\'' + link + '\')');

    $('#DL').submit(function checkform() {
        $.modal.close();
        window.open(link);
        return true;
    });

更新 2

对,这是因为在 ASP 触发之前模态弹出窗口关闭。如果我们注释掉 $.modal.close(); 然后asp按预期触发。在 Chrome 和 IE 中,javascript 和 ASP 必须同时触发,在 Firefox 中,javascript 触发“隐藏”带有“modelContent”的 div 并且 asp 不能再触发。所以这是真正的问题......现在如何解决......

4

0 回答 0