【问题标题】:Simultaneously open mailto and submit form同时打开mailto并提交表单
【发布时间】:2013-05-14 12:08:39
【问题描述】:

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

window.location = "mailto:email@example.com";

作为提交输入的点击事件的回调,但这不起作用。好像表单提交很快。

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

我也有防止和延迟表单提交的想法

window.location = "mailto:personalcounselor@gleim.com";
setTimeout(function () { 
    $(this).closest('form').trigger('submit');
}.bind(this), 1000); 
e.preventDefault();

这也有效,但对我来说似乎很粗略。

有没有办法同时提交表单和打开mailto链接?

【问题讨论】:

  • 假设您正在尝试提交表单(这将导致回发),有一些合理的选择... 1) 将您的提交功能更改为导致您预期的成功行为的 ajax 方法2)创建一个隐藏链接,您可以使用 href="mailto:email@example.com".. 触发点击
  • @BrettWeber 这是一个可能的解决方案,但它仍然会导致延迟(他们必须等待请求完成)。我宁愿让浏览器显示表单提交的可见延迟
  • 很抱歉过早地添加了该评论,已编辑以显示另一个选项。作为事后的想法,您是否尝试通过将提交按钮包装在具有 mailto href 的链接中来更改 html?
  • @BrettWeber 不......这真的有效吗?立即尝试
  • @BrettWeber 似乎不起作用,但有趣的想法

标签: javascript html mailto


【解决方案1】:

我不知道这是否可行,但我确信通过一些调整它应该可以工作并获得您想要的结果(如果它不起作用,那么评论太长了我很乐意删除它!);

$("form").on("submit", function() {
     window.onbeforeunload = function() {
         window.location = "mailto:email@example.com";
     };
});

简单来说就是在提交表单的时候,设置onbeforeunload事件,将位置改为mailto。我认为这样做只会在提交表单时打开邮件,而不是在用户离开时打开。

我不知道这是否可行,或者它是多么的老套,但我想我会投入两分钱!

更新

On form submit, mailto from javascript with form values

这似乎确实有效并得到了其他人的验证。

$("input[type=submit]").click(function(){
     window.location.href = "mailto:email@example.com";
});

【讨论】:

  • 似乎是一个很好的尝试,但它对我不起作用。我还没有打开客户端,所以也许这会有所不同。我明天再测试一下
  • 我会再做几次尝试让这个为你工作,如果我得到解决方案,我会发布它。
猜你喜欢
  • 2018-05-19
  • 1970-01-01
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多