javascript - 切换两个复选框

标签 javascript checkbox toggle

我有两个复选框,每个复选框分别处理垂直和水平状态。如果两个都关闭是可以的,但是如果一个打开另一个必须关闭,最重要的是两个都不能打开。

我不想在这里使用 jQuery。

如果我都未选中,然后先点击水平,然后点击垂直,它们将切换,因为水平未选中,垂直将变为选中。

但如果我从垂直开始以其他方式进行,我无法检查水平。

完整代码在 github 上和演示在 gh-pages 上运行.

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>Toggle</title>
</head>
<style>
  .constraint {
    color: #007bff;
    padding: 0rem .5rem;
  }
  
  span.horz:before {
    content: "\2194";
  }
  
  span.vert:before {
    content: "\2195";
  }
</style>

<body>
  <span class="constraint">Constraint: </span>
  <span class="constraint vert">
        <input type="checkbox" id="vertical" onchange="constraints()">
        <span class="constraint horz"></span>
  <input type="checkbox" id="horizontal" onchange="constraints()">
</body>
<script type="text/javascript">
  function constraints() {
    inputVert = document.getElementById("vertical");
    inputHorz = document.getElementById("horizontal");
    console.log("initially: vert:" + inputVert.checked);
    console.log("initially: horz:" + inputHorz.checked);
    if (inputVert.checked) {
      console.log("vert clicked -> vert:" + inputVert.checked);
      console.log("vert clicked -> horz:" + inputHorz.checked);
      // inputHorz = document.getElementById("horizontal");
      inputHorz.checked = false;
      // inputVert.checked = true;
    };
    if (inputHorz.checked) {
      console.log("horz clicked -> vert:" + inputVert.checked);
      console.log("horz clicked -> horz:" + inputHorz.checked);
      // inputVert = document.getElementById("vertical");
      inputVert.checked = false;
      // inputHorz.checked = true;
    };
  }
</script>

</html>

非常感谢任何帮助,

谢谢

最佳答案

使用 JQuery 你可以这样做,希望这对你有帮助

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>Toggle</title>
</head>
<style>
  .constraint {
    color: #007bff;
    padding: 0rem .5rem;
  }

  span.horz:before {
    content: "\2194";
  }

  span.vert:before {
    content: "\2195";
  }
</style>

<body>
  <span class="constraint">Constraint: </span>
  <span class="constraint vert">
  <input type="checkbox" id="vertical">
  <span class="constraint horz"></span>
  <input type="checkbox" id="horizontal">
</body>
<script type="text/javascript">
  
    $('#vertical').change(function() {
        if($(this).is(":checked")){
          $('#horizontal').attr('checked', false);
        }    
    });
    
    $('#horizontal').change(function() {
        if($(this).is(":checked")){
          $('#vertical').attr('checked', false);
        }    
    });
  
  
</script>

</html>

关于javascript - 切换两个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46221461/

相关文章:

javascript - 如何检查变量是否是javascript中的类型化数组?

javascript - 页面不在水平滚动上重绘

javascript - 使用切换时使第二个 div 位于第一个 div 旁边

jquery 设置 div 来切换复选框中断单击复选框本身

javascript - 找不到包裹在匿名函数中的递归函数调用

javascript - 为什么这个普通的 JavaScript 可以工作,而它等效的 jQuery 会失败?

php - 是否在检查 radio 时检查

ruby-on-rails - ruby on rails,无法将 check_box_tag 值传回 update_attributes

android - 如何使用复选框创建 ListPreference

javascript - jQuery Toggle 不适用于多个元素