我要从表单中获取所有输入框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);
}
请问有人可以帮忙吗?
答案 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').each
和results.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的人