使用javascript将输入值替换为mailto

时间:2017-12-27 21:51:16

标签: javascript jquery mailto

我必须通过电子邮件发送一些信息,但我不能使用PHP。我已设置输入以获取用户的电子邮件地址。

<form name="email-form">
    <div class="email">
        Enter your email:
        <input type="email" name="email-value">
    </div>
    <a type="submit" class="email-link" value="Email Results"></a>
</form>

我认为我可以做的是设置这样的onClick事件,并将用户输入附加到mailto:part的末尾。

var emailAddy = $("email-value").val();
    $(".email-link").on("click", function(){
        $(".email-link").prop("href", "mailto:").append( emailAddy );

    });

在运行此代码时不会出现任何错误,但是当邮件客户端出现时,“to:”部分为空白。这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

这里有很多事情发生。

  • $("email-value")并不匹配任何内容。你想要$('input[name="email-value"]')
  • 在用户有机会输入任何内容之前,您尝试在页面加载时捕获全局变量中的电子邮件地址,因此它始终为空。相反,您应该在使用它的函数中捕获该值。
  • .append将文本节点添加到文档中。你想要的是将电子邮件地址连接到字符串&#34; mailto:&#34;,所以只需使用连接(+)。
  • <a>个标签没有value属性。请改用标签内的文本节点。
  • <a>代码不具有type属性,并且不是表单的提交按钮。幸运的是,您正在做的是构建常规锚链接,因此它不需要作为提交按钮;表单的唯一用途是输入字段。
  • 开始时锚点上没有href属性,因此浏览器不会将其设置为链接。
  • href是属性,而不是道具:使用.attr()prop适用于checkeddisabled
  • 等布尔值
  • 您在同一点击事件中更改链接的href,这会触发该链接。这看起来似乎有点意外 - 但意味着链接上的悬停指示符不正确(因为在用户点击链接之前href不存在。)我将使用更改事件改为输入字段(理想情况下,在更改链接href之前验证电子邮件地址。)

以下是您的代码的更正版本:

&#13;
&#13;
$('input[name="email-value"]').on("change", function() {
  var emailAddress = $(this).val();
  // validate the address here
  $(".email-link").attr("href", "mailto:" + emailAddress);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="email-form">
  <div class="email">
    Enter your email:
    <input type="email" name="email-value">
  </div>
</form>
<a href="#" class="email-link">Email Results</a>
&#13;
&#13;
&#13;

答案 1 :(得分:-2)

您需要使用attr instend of append来设置attribut值

$(".email-link").on("click", function(){
  var emailAddy = $("input[name='email-value']").val();
  $(this).attr("href", "mailto:" + emailAddy);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="email-form">
    <div class="email">
        Enter your email:
        <input type="email" name="email-value">
    </div>
    <a type="submit" class="email-link" value="Email Results">Submit</a>
</form>

编辑:您的值的选择器未定义,按类,名称,ID等目标...