当没有ID时使用jQuery填充表单

时间:2017-03-13 16:23:54

标签: javascript jquery html

我是使用jQuery的新手,并且在反馈页面中为请求姓名,电子邮件和评论/问题的客户提供了一个小部件。我试图通过URL通过传递值自动填充电子邮件输入。这部分代码是正确的,用var email表示。我试图通过jQuery选择输入,但到目前为止还没有成功,因为输入标记大量嵌入div中,所有这些都没有ID。输入标记也没有ID,只有typenamerequired 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}}的控制台日志。以下是小部件中标签层次结构的结构快照(请记住,我无法更改小部件代码):

enter image description here

突出显示的元素是我需要选择并更改。

的值

3 个答案:

答案 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的输入,您就可以确定抓取了正确的元素。