Javascript选择具有数组样式名称的所有HTML输入字段

Javascript选择具有数组样式名称的所有HTML输入字段,javascript,html,Javascript,Html,我有一个正在构建的表单,希望有一个javascript来选择和操作命名数组中的所有字段: <input type="text" name="location[street]" value required /> <input type="text" name="location[city]" value required /> <input type="text" name="location[zip]" value required /> <input

我有一个正在构建的表单,希望有一个javascript来选择和操作命名数组中的所有字段:

<input type="text" name="location[street]" value required />
<input type="text" name="location[city]" value required />
<input type="text" name="location[zip]" value required />
<input type="text" name="location[state]" value required />

如何为javascript构建选择器以切换所有元素的禁用状态

Jquery是可能的,但不是首选。我更喜欢不使用库的方法,比如document.getElementsByName()。

我认为它不支持选择器通过属性获取元素,就像jQuery是
input[name^=“location”]
()。那么,试试这个:

var els = document.querySelectorAll('input');

for (var i = 0; i < els.length; i++)
{
    if (els[i].name.indexOf("location") > -1)
    {
        els[i].disabled = true;
    }
}

我认为它不支持选择器通过属性获取元素,就像jQuery是
输入[name^=“location”]
()。那么,试试这个:

var els = document.querySelectorAll('input');

for (var i = 0; i < els.length; i++)
{
    if (els[i].name.indexOf("location") > -1)
    {
        els[i].disabled = true;
    }
}

我认为它不支持选择器通过属性获取元素,就像jQuery是
输入[name^=“location”]
()。那么,试试这个:

var els = document.querySelectorAll('input');

for (var i = 0; i < els.length; i++)
{
    if (els[i].name.indexOf("location") > -1)
    {
        els[i].disabled = true;
    }
}

我认为它不支持选择器通过属性获取元素,就像jQuery是
输入[name^=“location”]
()。那么,试试这个:

var els = document.querySelectorAll('input');

for (var i = 0; i < els.length; i++)
{
    if (els[i].name.indexOf("location") > -1)
    {
        els[i].disabled = true;
    }
}

查询选择器的替代方法是getElementsByTagName

var i;
var inputs = document.getElementsByTagName("input");

for (i = 0; i < inputs.length; ++i) {
 var name =  inputs[i].getAttribute("name");
    if(name.indexOf("location") > -1)
    {
    inputs[i].disabled = true;
        console.log(name);

    }
}
vari;
var inputs=document.getElementsByTagName(“输入”);
对于(i=0;i-1)
{
输入[i]。禁用=真;
console.log(名称);
}
}

查询选择器的替代方法是getElementsByTagName

var i;
var inputs = document.getElementsByTagName("input");

for (i = 0; i < inputs.length; ++i) {
 var name =  inputs[i].getAttribute("name");
    if(name.indexOf("location") > -1)
    {
    inputs[i].disabled = true;
        console.log(name);

    }
}
vari;
var inputs=document.getElementsByTagName(“输入”);
对于(i=0;i-1)
{
输入[i]。禁用=真;
console.log(名称);
}
}

查询选择器的替代方法是getElementsByTagName

var i;
var inputs = document.getElementsByTagName("input");

for (i = 0; i < inputs.length; ++i) {
 var name =  inputs[i].getAttribute("name");
    if(name.indexOf("location") > -1)
    {
    inputs[i].disabled = true;
        console.log(name);

    }
}
vari;
var inputs=document.getElementsByTagName(“输入”);
对于(i=0;i-1)
{
输入[i]。禁用=真;
console.log(名称);
}
}

查询选择器的替代方法是getElementsByTagName

var i;
var inputs = document.getElementsByTagName("input");

for (i = 0; i < inputs.length; ++i) {
 var name =  inputs[i].getAttribute("name");
    if(name.indexOf("location") > -1)
    {
    inputs[i].disabled = true;
        console.log(name);

    }
}
vari;
var inputs=document.getElementsByTagName(“输入”);
对于(i=0;i-1)
{
输入[i]。禁用=真;
console.log(名称);
}
}

这是可行的,但是,它不包括任何TEXTAREA或SELECT表单元素(这是我在问题中没有提到它们的错误)。如果我必须循环所有输入元素,我不妨循环所有表单元素并进行相同的比较。将querySelectorAll()更改为document.getElementById('form_id')。元素,以便也可以选择非输入表单类型。。。但除此之外,这个答案是正确的。使用document.querySelectorAll('input,textarea,select')比使用form.elements更有效吗?在这种情况下,我认为
form.elements
应该适合您的需要,但我真的不知道在这种情况下哪个更好。您可以做的是为所有元素设置一个类,从名称标记中的
location
开始,然后使用
.location element
选择它们。在这种情况下,
querySelectorAll
将更有意义。使用一个变量作为长度,这样您就不会反复计算它。但是,这是可行的,它不包括任何TEXTAREA或SELECT表单元素(这是我在问题中没有提到它们的错误)。如果我必须循环所有输入元素,我不妨循环所有表单元素并进行相同的比较。将querySelectorAll()更改为document.getElementById('form_id')。元素,以便也可以选择非输入表单类型。。。但除此之外,这个答案是正确的。使用document.querySelectorAll('input,textarea,select')比使用form.elements更有效吗?在这种情况下,我认为
form.elements
应该适合您的需要,但我真的不知道在这种情况下哪个更好。您可以做的是为所有元素设置一个类,从名称标记中的
location
开始,然后使用
.location element
选择它们。在这种情况下,
querySelectorAll
将更有意义。使用一个变量作为长度,这样您就不会反复计算它。但是,这是可行的,它不包括任何TEXTAREA或SELECT表单元素(这是我在问题中没有提到它们的错误)。如果我必须循环所有输入元素,我不妨循环所有表单元素并进行相同的比较。将querySelectorAll()更改为document.getElementById('form_id')。元素,以便也可以选择非输入表单类型。。。但除此之外,这个答案是正确的。使用document.querySelectorAll('input,textarea,select')比使用form.elements更有效吗?在这种情况下,我认为
form.elements
应该适合您的需要,但我真的不知道在这种情况下哪个更好。您可以做的是为所有元素设置一个类,从名称标记中的
location
开始,然后使用
.location element
选择它们。在这种情况下,
querySelectorAll
将更有意义。使用一个变量作为长度,这样您就不会反复计算它。但是,这是可行的,它不包括任何TEXTAREA或SELECT表单元素(这是我在问题中没有提到它们的错误)。如果我必须循环所有输入元素,我不妨循环所有表单元素并进行相同的比较。将querySelectorAll()更改为document.getElementById('form_id')。元素,以便也可以选择非输入表单类型。。。但是