2013-05-20 108 views
1

根据管理层的要求,我需要打开用户的电子邮件客户端并通过单击按钮提交表单。我最初有同时打开mailto并提交表格

window.location = "mailto:[email protected]"; 

作为提交输入的点击事件的回调,但这是行不通的。它似乎很快提交表单。

使用window.open确实有效,但它会创建一个不合需要的空白窗口。

我也有想法,预防和延缓表单提交在

window.location = "mailto:[email protected]"; 
setTimeout(function() { 
    $(this).closest('form').trigger('submit'); 
}.bind(this), 1000); 
e.preventDefault(); 

这也适用,但它似乎粗略给我。

有什么办法可以同时提交表单并打开邮件链接?

+0

假设你正在试图提交表单(这将导致回传),有几个合理的方案...... 1)改变你的提交功能,导致成功 您的预期行为的AJAX方法2)创建一个隐藏的链接,您触发点击与href =“mailto:[email protected]”.. –

+0

@BrettWeber这是一个可能的解决方案,但它仍然会导致延迟(他们将不得不等待请求完成)。我宁愿让浏览器显示表单提交 –

+0

的可见延迟,以免过早添加该评论,编辑后显示另一个选项。作为事后的想法,你有没有尝试通过将提交按钮包装到具有mailto href的链接中来更改html? –

回答

2

我不知道这是否可以工作,但我相信稍微调整一下它应该可以工作并获得所期望的结果(这太长了,以至于无法放入评论中,如果它不会我会很乐意删除它!);表单提交时

$("form").on("submit", function() { 
    window.onbeforeunload = function() { 
     window.location = "mailto:[email protected]"; 
    }; 
}); 

简单地说,设置onbeforeunload事件改变位置的邮寄地址。我认为这样做只会让邮件在提交表单时打开,而不是在用户刚刚导航时打开。

我不知道这是否会起作用,或者它有多么可笑,但我认为我会投入我的两分钱!

UPDATE

On form submit, mailto from javascript with form values

这似乎工作和其他人核实。

$("input[type=submit]").click(function(){ 
    window.location.href = "mailto:[email protected]"; 
}); 
+0

看起来像一个伟大的尝试,但它不适合我。我没有客户已经打开,所以也许这有所作为。我将在明天对此进行更多测试 –

+0

如果我得到解决方案,我会再试一次,试着让它为您工作。 – GriffLab