Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果已在加载时选中复选框_Javascript_Jquery_Html_Checkbox - Fatal编程技术网

Javascript 如果已在加载时选中复选框

Javascript 如果已在加载时选中复选框,javascript,jquery,html,checkbox,Javascript,Jquery,Html,Checkbox,使用这个jquery,我将遍历元素并检查是否选中了相关复选框 当页面加载时,复选框被选中,但控制台显示console.log(id+“notchecked”) 我是否遗漏了什么,因为就我所知,它应该显示console.log(id+“checked”) 代码和HTML: $(文档).ready(函数(e){ $('.row')。每个(函数(索引,元素){ log($(element.attr(“id”)); 默认_状态($(元素).attr(“id”); }); }); 功能默认_状态(id)

使用这个jquery,我将遍历元素并检查是否选中了相关复选框

当页面加载时,复选框被选中,但控制台显示
console.log(id+“notchecked”)

我是否遗漏了什么,因为就我所知,它应该显示
console.log(id+“checked”)

代码和HTML:

$(文档).ready(函数(e){
$('.row')。每个(函数(索引,元素){
log($(element.attr(“id”));
默认_状态($(元素).attr(“id”);
});
});
功能默认_状态(id){
if($('#dr_default'+id).is(':checked')){
console.log(id+‘checked’);
对于(i=1;i<4;i++){
$('dr#u number'+i+'id).val('');
$('dr#u number'+i+'.'+id).attr('placeholder','default');
$('dr#u number'+i+'id).attr('disabled',true);
$(“#dr_number”+i+“'+id).removeClass('required');
}
}否则{
console.log(id+‘未选中’);
对于(i=1;i<4;i++){
$('dr#u number'+i+'id).val('');
$('dr#u number'+i+'id).attr('placeholder','');
$('dr#u number'+i+'+id).attr('disabled',false);
$(“#dr_number”+i+“'+id).addClass('required');
}
}
}

1.
2.

问题在于,传递到“default_status()”函数中的ID已经完成,除了
之外,它将成为有效的CSS/jQuery选择器

这意味着,当您运行
$('#dr_default_'+id)
时,它实际上会使最终选择器
$('#dr_default_dr_default_1')
(例如),当然jQuery无法找到它,因此它会将其报告为未选中

只需从测试中删除硬编码的id部分,它就可以工作了:

$(文档).ready(函数(e){
$('.row')。每个(函数(索引,元素){
log($(element.attr(“id”));
默认_状态($(元素).attr(“id”);
});
});
功能默认_状态(id){
if($('#'+id.).is(':checked')){
console.log(id+‘checked’);
对于(i=1;i<4;i++){
$('dr#u number'+i+'id).val('');
$('dr#u number'+i+'.'+id).attr('placeholder','default');
$('dr#u number'+i+'id).prop('disabled',true);
$(“#dr_number”+i+“'+id).removeClass('required');
}
}否则{
console.log(id+‘未选中’);
对于(i=1;i<4;i++){
$('dr#u number'+i+'id).val('');
$('dr#u number'+i+'id).attr('placeholder','');
$('dr#u number'+i+'id).prop('disabled',false);
$(“#dr_number”+i+“'+id).addClass('required');
}
}
}

1.
2.

是的,它可能应该这样做。你能举一个相关HTML的例子吗?让我们看看你的几行。可能还有其他一些微妙的错误导致了您的问题。顺便说一句,作为次要点…根据jQuery,您应该使用.prop()而不是.attr()来设置“disabled”-因为从技术上讲,它是一个属性,而不是普通属性。页面上写着“要检索和更改DOM属性,如表单元素的选中、选中或禁用状态,请使用.prop()方法”@ADyson see updateIn您的default_status函数,只需参考id,而不是“#dr_default_uu”+id。id应该包含#dr_default_u1,例如side notes
id
是元素的属性,因此
$(Element).attr(“id”)
不必要地调用了两个方法。只需使用
element.id
。其次,
.is(':checked')
使用伪选择器来确定布尔值,但是对已找到元素的
.prop('checked')
返回完全相同的值,并直接检索属性,而不尝试处理伪选择器。双赢。