如何通过循环禁用所有输入框

时间:2018-08-26 16:16:24

标签: javascript jquery

我要从表单中获取所有输入框ID,并且我需要禁用所有输入框,

我尝试使用以下代码

var results = [];
$('#form input').each(function(){
    results.push({
        id: this.id,
        value: this.value
    });
});
var i;
for( i= 0; i< results.length ; ++i)
{
    var input_id = results[i].id; //getting all input box ids
    $('#input_id ').prop('disabled', true);
}

请问有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

$('#input_id ')以{strong>字面意义查找具有id="input_id"的元素。要使用input_id变量,请使用字符串串联:

    $('#' + input_id).prop('disabled', true);
//      ^^^^^^^^^^^^

...或ES2015 +中的template literal

    $(`#${input_id}`).prop('disabled', true);
//    ^ ^^^^^^^^^^^^

旁注:您可以使用jQuery的map代替$('#form input').eachresults.push。但是没有理由进行两个循环。相反,只需对prop的结果调用$("#form input").each(...)。 jQuery是基于 set的,当您使用mutator操作(如.prop("disabled, true))时,它将应用于集合中的所有元素:

var results = [];
$('#form input').each(function(){
    results.push({
        id: this.id,
        value: this.value
    });
}).prop("disabled", true); // ***

或者,您可以使用map(最后使用get来获得一个真正的数组而不是jQuery对象),而直接在回调中设置disabled即可:

var results = $('#form input').map(function() {
    this.disabled = true; // ***
    return {
        id: this.id,
        value: this.value
    };
}).get();

答案 1 :(得分:1)

为什么似乎所有输入都没有一行?

$("#form input").prop('disabled', true);

$("#form input[id]").prop('disabled', true);

如果您只想选择具有ID的人