javascript - 启用第一个复选框后禁用其他复选框

标签 javascript jquery html forms checkbox

我正在构建多个复选框。我想添加一个功能,如果第一个答案是"is"(数据是否到达?答案:是),所有剩余的复选框都被禁用。我应该怎么做?

HTML:

<p><span>Did data reach?</span>
   <form action="" method="post">
     <input type="checkbox" id="checkme1" value="Yes" />
     Yes
     <input type="checkbox" id="checkme2" value="No" />
     No
   </form>
 </p>
 <p>
   <span>Is time right?</span>

   <form action="" method="post">
      <input type="checkbox" id="checkme3" value="Yes" />
      Yes
      <input type="checkbox" id="checkme4" value="No" />
      No
   </form>
  </p>
  <p>
    <span>Is order complete?</span>
    <form action="" method="post">
      <input type="checkbox" id="checkme5" value="Yes" />
      Yes
      <input type="checkbox" id="checkme6" value="No" /> 
      No
    </form>
  </p>

JS:

 var checker1 = document.getElementById('checkme1');
 var checker2 = document.getElementById('checkme2');
 var checker3 = document.getElementById('checkme3');
 var checker4 = document.getElementById('checkme4');
 var checker5 = document.getElementById('checkme5');
 var checker6 = document.getElementById('checkme6');
 // when unchecked or checked, run the function
 checker1.onchange = function(){
if(this.checked){
    checkme1.disabled = false;
} else {
    checkme2.disabled = false;
} else {
    checkme3.disabled = true;
} else {
    checkme4.disabled = true;
} else {
    checkme5.disabled = true;
} else {
    checkme6.disabled = true;

}

最佳答案

不止一种else 情况是无效语法。您需要一个包含禁用所有其他复选框的代码的 if,然后是一个包含(重新)启用所有其他复选框的代码的 else:

if(this.checked){
    checkme2.disabled = true;
    checkme3.disabled = true;
    checkme4.disabled = true;
    checkme5.disabled = true;
    checkme6.disabled = true;
} else {
    checkme2.disabled = false;
    checkme3.disabled = false;
    checkme4.disabled = false;
    checkme5.disabled = false;
    checkme6.disabled = false;
}

或者您可以通过完全省略 if/else 来缩短它:

checkme2.disabled = this.checked;
checkme3.disabled = this.checked;
checkme4.disabled = this.checked;
checkme5.disabled = this.checked;
checkme6.disabled = this.checked;

或者一个声明:

checker2.disabled
  = checker3.disabled
  = checker4.disabled
  = checker5.disabled
  = checker6.disabled
  = this.checked;

或者,一行 jQuery(不需要任何 checkmeX 变量):

$("#checkme1").click(function() {
  $(":checkbox").not(this).prop("disabled", this.checked);
});

(展开并运行以下命令以查看它是否适用于您的 html。)

$("#checkme1").click(function() {
  $(":checkbox").not(this).prop("disabled", this.checked);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<p><span>Did data reach?</span>
  <form action="" method="post">
    <input type="checkbox" id="checkme1" value="Yes" />Yes
    <input type="checkbox" id="checkme2" value="No" />No</form>
</p>
<p><span>Is time right?</span>
  <form action="" method="post">
    <input type="checkbox" id="checkme3" value="Yes" />Yes
    <input type="checkbox" id="checkme4" value="No" />No</form>
</p>
<p><span>Is order complete?</span>
  <form action="" method="post">
    <input type="checkbox" id="checkme5" value="Yes" />Yes
    <input type="checkbox" id="checkme6" value="No" />No</form>
</p>

关于javascript - 启用第一个复选框后禁用其他复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40122204/

相关文章:

php - 在MySql中插入phonegap数据

javascript - 在 Polymer 1.0 中使用选项卡切换 View

javascript - 如何对数组的所有唯一数字求和?

javascript - 即使在同一域上,访问控制允许来源

javascript - Marionette 进行 self 渲染的最佳方式

javascript - React 如何调用 prop

javascript - jquery 从特定表单获取所有输入

javascript - 如何将 onchange 上的值传递给 jquery 中的另一个 onchange 事件

javascript - 获取对 jQuery 事件处理程序内动态绑定(bind)事件的上下文元素的访问

javascript - 如何根据我创建的数量让我的 div 填充剩余空间?