我是使用jQuery的新手,并且在反馈页面中为请求姓名,电子邮件和评论/问题的客户提供了一个小部件。我试图通过URL通过传递值自动填充电子邮件输入。这部分代码是正确的,用var email
表示。我试图通过jQuery选择输入,但到目前为止还没有成功,因为输入标记大量嵌入div中,所有这些都没有ID。输入标记也没有ID,只有type
,name
和required pattern
。
以下是我到目前为止使用jQuery选择输入以及从URL获取电子邮件的代码:
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
};
var email = getUrlParameter('email');
console.log(email);
// Use jQuery to select the proper input field
var value = $('input[type=email].name').val();
console.log(value);
此代码没有发生错误,但我确实找到value
的{{1}}的控制台日志。以下是小部件中标签层次结构的结构快照(请记住,我无法更改小部件代码):
突出显示的元素是我需要选择并更改。
的值答案 0 :(得分:1)
为什么选择器中的.name
?
分析您的选择器,您正在选择input
类型的元素(正确),类型为email
(正确)和类name
。输入类不正确是空的。在选择器中,点表示类:https://www.w3schools.com/cssref/css_selectors.asp
您应该删除.name
内容。
此外,如果列表中有更多类型为email的输入,则应使用此输入唯一的选择器。寻找父母的ids,独特的属性等。
只需预先设置父选择器,即可选择特定父级内的元素。我看到你在某个地方有一个身份content
的父母,那么你可以这样做:
$("#content input[type='email']")
主题标签表示按ID选择。
使选择器更具选择性(什么?),您可以通过输入属性进行选择。只需添加任意数量的属性:
$("#content input[type='email'][name='email']")
如果通过属性,此输入已经是唯一的,您可以这样保留:
$("input[type='email'][name='email']")
不要选择,也不要低估。如果向选择器添加如此多的元素,则在更改内容时很容易破坏,但如果添加的元素太少,则在添加内容时很容易重复。只需保持足够的。
答案 1 :(得分:0)
您可以尝试调用输入的父div类。试试这段代码。
Promise[Dog]
答案 2 :(得分:0)
不要对jQuery选择器过于具体,你想要给予足够的确保唯一选择。试一试:
var value = $('input[name="email"]');
只要这是页面上唯一名称为email
的输入,您就可以确定抓取了正确的元素。