Javascript 禁用每个未选中的复选框

Javascript 禁用每个未选中的复选框,javascript,html,forms,dom,input,Javascript,Html,Forms,Dom,Input,我有一堆表单,每个表单中都有一个复选框,当满足条件时,我想禁用所有未选中的复选框 我试过这么做,但运气不好 if (updateShowcasedProducts.length == 12) { document.querySelectorAll('input[type="checkbox"]:not(:checked)').disabled = true; } 我最好只使用香草javascr

我有一堆表单,每个表单中都有一个复选框,当满足条件时,我想禁用所有未选中的复选框

我试过这么做,但运气不好

if (updateShowcasedProducts.length == 12) {                                    
 document.querySelectorAll('input[type="checkbox"]:not(:checked)').disabled = true;
    }

我最好只使用香草javascript。

您需要循环查询选择的结果


您需要循环查询SelectorAll的结果


querySelectorAll返回一个NodeList对象,您必须使用该对象迭代元素并禁用它们

if (updateShowcasedProducts.length == 12) {                                    
    document.querySelectorAll('input[type="checkbox"]:not(:checked)').forEach((element) => {
       element.disabled = true;
    });
}

querySelectorAll返回一个NodeList对象,您必须使用该对象迭代元素并禁用它们

if (updateShowcasedProducts.length == 12) {                                    
    document.querySelectorAll('input[type="checkbox"]:not(:checked)').forEach((element) => {
       element.disabled = true;
    });
}

您可以首先为所有这些输入使用一个类,即复选框。然后使用选中的属性:

let checkBoxes = document.getElementsByClassName("checkbox");
checkBoxes.forEach(checkBox)=>{
    if(!checkBox.checked){
          checkBox.disabled=true;
    };
});

您可以首先为所有这些输入使用一个类,即复选框。然后使用选中的属性:

let checkBoxes = document.getElementsByClassName("checkbox");
checkBoxes.forEach(checkBox)=>{
    if(!checkBox.checked){
          checkBox.disabled=true;
    };
});

您可以使用以下内容:

if (updateShowcasedProducts.length == 12) {
    document.querySelectorAll('input[type="checkbox"]').forEach(i => i.disabled = true);
}

编辑:我太慢了。@Gunther已建议:

您可以使用以下内容:

if (updateShowcasedProducts.length == 12) {
    document.querySelectorAll('input[type="checkbox"]').forEach(i => i.disabled = true);
}

编辑:我太慢了。已经由@Gunther建议:

这是否回答了您的问题?这回答了你的问题吗?看起来OP并没有实际使用一个名为CheckBox的类,如果他使用该类,我认为这将是一个简单的解决方案。需要更多的现有代码更改,但我理解您的逻辑。是的,您是对的,这将是代码中的一个大更改,嗯……我没有考虑过。您的解决方案更优雅、更灵活,因此我将投票。所谓灵活,我的意思是假设将来禁用时只应包含某些复选框,而不是所有未选中的复选框。似乎OP实际上使用了一个名为checkbox的类。如果他使用该类,我认为这将是一个简单的解决方案。需要更多现有代码更改,但我理解您的逻辑。是的,您是对的,这将是代码上的一个大变化,嗯……我没想过。你的解决方案更优雅、更灵活,所以我会投票。所谓灵活,我的意思是假设将来只有某些复选框应包含在禁用中,而不是所有未选中的复选框。无论哪种方式,谢谢您的输入无论哪种方式,谢谢您的输入