javascript - 防止复选框同时被选中和禁用

标签 javascript html forms checkbox selectors-api

我有一个程序,其中 javascript 会更改几个复选框,根据其他复选框的选中情况来禁用、选中或取消选中它们。我注意到,如果您选中了一个复选框,然后将其禁用,则可以同时选中和禁用它。我不希望这成为可能。我希望任何被禁用的复选框也被取消选中。我一直在寻找一种简单的方法来做到这一点。我认为 queryselectorall 会起作用。这是一个简化的示例。在此示例中,我默认选中并禁用其中一个复选框。如果您单击另一个框,它应该取消禁用框中的选中状态。我以为这个简单的函数就可以做到这一点,但它不起作用。

 function fixit() {
    document.querySelectorAll('input[type="checkbox"]:checked:disabled').checked=0;
    }
    <form id='theform' name='mainform' method='post' action='#'>
    box1<input onClick='fixit()' type='checkbox' disabled checked> 
    box2<input onClick='fixit()' type='checkbox'>
    box3<input onClick='fixit()' type='checkbox'>
    </form>

最佳答案

querySelectorAll返回一个元素列表,该列表没有属性 checked。您需要迭代元素列表并应用更改。

function fixit() {
  var cbs = document.querySelectorAll('input[type="checkbox"]:checked:disabled');
  for(var i = 0;i<cbs.length;i++){
    cbs[i].checked = 0;
  }
}
<form id='theform' name='mainform' method='post' action='#'>
    box1<input onClick='fixit()' type='checkbox' disabled checked> 
    box2<input onClick='fixit()' type='checkbox'>
    box3<input onClick='fixit()' type='checkbox'>
    </form>

关于javascript - 防止复选框同时被选中和禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41516770/

相关文章:

javascript - 在 jQuery ajax 函数中使用 jQuery 插件的范围问题

JavaScript 概率

html - 如何限制 &lt;textarea&gt; 的可拖动宽度

HTML 下拉列表(选择),在每个值(选项)后带有文本换行和边框

django - 如何将 request.user 的信息提供给 clean 方法

javascript - 递归中的参数继承

html - 联系表单字段没有响应/不会缩放

php - 使用 PHP 避免表单字段中出现无意义的文本

javascript - daterangepicker - 将字段输入复制到另一个字段输入

Javascript:Is-SubArray 返回 false