使用javascript将输入值替换为mailto
我必须通过电子邮件发送一些信息,不幸的是我不能使用PHP。我已经设置了一个输入来获取用户的电子邮件地址使用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
<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 );
});