使用Javascript取消选中所有其他复选框

时间:2018-04-24 13:01:56

标签: javascript

我有以下代码:

{{1}}

我正在寻找的是正确的javascript,如果选中“none”选项,则取消选中任何/所有其他选项 - 以确保人们无法选中其他选项。我打算使用一个名为GDPRcheck()的函数来执行此操作。

1 个答案:

答案 0 :(得分:1)

首先,您需要在this函数中传递GDPRcheck,以便可以在函数内引用所单击的元素,然后使用querySelectorAll获取所有复选框。然后,设置uncheck所有其他复选框的条件,但none

checked复选框除外



function GDPRcheck(elem){
  if(elem.value === 'none'){
    document.querySelectorAll('[id^="gdpr"]').forEach(function(chkBox){
      if(elem.checked && chkBox.value !== 'none'){
        chkBox.checked = false;
      }
    });
  } else {
     var noneChkBox = document.getElementById('gdpr3');
     if(noneChkBox.checked){
        noneChkBox.checked = false;
     }
  }
}

<div class="formControls">
  <label for="gdpr0" class="checkbox-inline">
  <input type="checkbox" name="form[gdpr][]" value="email" id="gdpr0" onchange="GDPRcheck(this);" class="gdpr-option rsform-checkbox">By email</label> 
  <label for="gdpr1" class="checkbox-inline">
  <input type="checkbox" name="form[gdpr][]" value="phone" id="gdpr1" onchange="GDPRcheck(this);" class="gdpr-option rsform-checkbox">By phone</label> 
  <label for="gdpr2" class="checkbox-inline">
  <input type="checkbox" name="form[gdpr][]" value="post" id="gdpr2" onchange="GDPRcheck(this);" class="gdpr-option rsform-checkbox">By post</label> 
  <label for="gdpr3" class="checkbox-inline">
  <input type="checkbox" name="form[gdpr][]" value="none" id="gdpr3" onchange="GDPRcheck(this);" class="gdpr-option rsform-checkbox">None</label>
  <p class="formDescription">Please check all methods by which you are happy to be contacted.</p>
</div>
&#13;
&#13;
&#13;