gpt4 book ai didi

javascript - 遍历复选框并有条件地禁用未选中的

转载 作者:行者123 更新时间:2023-11-30 09:21:11 25 4
gpt4 key购买 nike

我正在尝试用纯 JS 编写一个基本函数,它只检查选中复选框的数量,如果该数量超过一定数量,则禁用其余数量。我可以在 jQuery 中轻松实现这一点,但试图让它在纯 JS 中工作。我有一个 CodePen 设置 here我在下面包括了我的工作 JS。感谢您提供任何见解。

(function() {

var checkboxes = document.querySelectorAll('input[id^="mktoCheckbox"]');
var active = document.querySelectorAll('input[id^="mktoCheckbox"]:checked');
var numActive = active.length;

console.log(numActive);

if (numActive > 1) {
for(var i = 0; i < checkboxes.length; i++){
if (checkboxes[i].checked == true) {
return;
} else {
checkboxes[i].disabled == true;
}
}
}

})();

最佳答案

你的代码有两个问题:

  1. 您正在从 if 条件返回,这会导致循环终止。
  2. 您没有将 true 分配给 disabled 属性,而是与 == 进行比较。

将相关代码段更改为以下内容以使其工作:

if (numActive > 1) {
for (var i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].checked != true) {
checkboxes[i].disabled = true;
}
}
}

你可以找到你的笔的工作叉 here .以下是一个有效的 SO 片段:

(function() {
var checkboxes = document.querySelectorAll('input[id^="mktoCheckbox"]');
var active = document.querySelectorAll('input[id^="mktoCheckbox"]:checked');
var numActive = active.length;

console.log(numActive);

if (numActive > 1) {
for (var i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].checked != true) {
checkboxes[i].disabled = true;
}
}
}
})();
<fieldset>
<legend>Choose some monster features</legend>

<div>
<input type="checkbox" id="mktoCheckbox_1" name="feature" value="scales" checked />
<label for="scales">Scales</label>
</div>

<div>
<input type="checkbox" id="mktoCheckbox_2" name="feature" value="horns" />
<label for="horns">Horns</label>
</div>

<div>
<input type="checkbox" id="mktoCheckbox_3" name="feature" value="claws" />
<label for="claws">Claws</label>
</div>

<div>
<input type="checkbox" id="mktoCheckbox_4" name="feature" value="tails" checked />
<label for="tails">Tails</label>
</div>

</fieldset>

关于javascript - 遍历复选框并有条件地禁用未选中的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51542906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com