使用javascript将输入值替换为mailto

使用javascript将输入值替换为mailto,javascript,jquery,mailto,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-lin

我必须通过电子邮件发送一些信息,不幸的是我不能使用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>

在中,运行此代码时不会出现任何错误,但当邮件客户端出现时,“收件人:”部分为空。这可能吗

您需要使用append的attr instend来设置属性值

$(“.email link”)。在(“单击”,函数()上){
var emailAddy=$(“输入[name='email-value']”)val();
$(this.attr(“href”,“mailto:”+emailAddy);
});

输入您的电子邮件:
提交

这里发生了很多事情

  • $(“电子邮件值”)
    与任何内容都不匹配。您需要
    $('input[name=“email value”]”)
  • 在用户有机会输入任何内容之前,您试图在页面加载时在全局变量中捕获电子邮件地址,因此它将始终为空。相反,您应该在使用该值的函数中捕获该值
  • .append
    将文本节点添加到文档中。您需要将电子邮件地址连接到字符串“mailto:”,因此只需使用连接(
    +

  • 当你说
    append
    你是在谈论DOM元素还是字符串连接?
    $(“电子邮件值”)
    正在寻找一个元素,
    .append(emailAddy)
    正在向节点添加文本,我认为更改单击处理程序中的href没有任何用处。我的错误是,我没有意识到添加了DOM元素而不是字符串。所以是的,将电子邮件连接到mailto上更有意义:但是在某个Jquery点之前,正确答案中的“attr”是可以的,但我使用的是最新的and.prop。谢谢你的提问和意见。谢谢。我认为attr已经被弃用了,Jquery文档说应该使用prop。我尝试过这个,并且理解它,除了为什么[name=“email value”]周围有引号之外,我认为这只是输入[name=email value]。然而,这实际上对我不起作用。这可能是因为我使用的是jquery3.2.1,我也可以使用.prop,正如前面所说的,我相信attr是不受欢迎的。您认为
    attr
    是不受欢迎的吗?在谷歌搜索了一段时间后,我想我看到了你困惑的根源:从jQuery 1.9开始,属性使用
    .attr()
    是不推荐的。它仍应用于属性。很高兴知道。我不知道我是怎么得出这个结论的。
    var emailAddy = $("email-value").val();
        $(".email-link").on("click", function(){
            $(".email-link").prop("href", "mailto:").append( emailAddy );
    
        });