Javascript 如果已在加载时选中复选框
使用这个jquery,我将遍历元素并检查是否选中了相关复选框 当页面加载时,复选框被选中,但控制台显示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)
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 notesid
是元素的属性,因此$(Element).attr(“id”)
不必要地调用了两个方法。只需使用element.id
。其次,.is(':checked')
使用伪选择器来确定布尔值,但是对已找到元素的.prop('checked')
返回完全相同的值,并直接检索属性,而不尝试处理伪选择器。双赢。