如何在 JavaScript 中使用复选框在选择选项内?


有时,我们需要在选择选项内使用复选框。我们可以通过在选择选项中引入复选框来允许用户选择多个选项。但是,如果我们对<select>标签使用multiple属性,它允许我们通过按“ctrl + 左键单击”来选择它们,但这是一种糟糕的用户体验。因此,我们可以在<select>菜单中引入复选框以改善用户体验。

在这里,我们将使用 JQuery 和 JavaScript 来管理<select>菜单中已选中复选框的值。

创建自定义选择菜单

HTML 的<select>元素不允许我们将复选框添加为选项。因此,我们可以使用 HTML <div>元素创建一个自定义下拉菜单,并将复选框添加为其选项。

语法

用户可以遵循以下语法来使用 JavaScript 管理自定义下拉菜单的复选框。

function showOptions() {
   if (showCheckBoxes) {
      // show options div
      showCheckBoxes = false;
   } else {
      // hide options div
      showCheckBoxes = true;
   }
}

function getOptions() {
   // selectedOptions is an array containing all checked checkboxes      
   var selectedOptions = document.querySelectorAll('input[type=checkbox]:checked')
}

在上面的语法中,我们根据showCheckBoxes变量的值显示自定义下拉菜单的选项。此外,我们可以遍历selectedOptions数组来逐个获取所有选中的复选框。

步骤

  • 步骤 1 − 创建一个包含菜单文本的 div。

  • 步骤 2 − 现在,使用自定义 HTML,并使用复选框输入类型创建选项。

  • 步骤 3 − 在 div 元素上添加 onClick 事件。当用户单击 div 时,它应该调用 showOptions() 菜单。

  • 步骤 4 − 在 JavaScript 中,声明 showCheckBoxes 变量,并将其初始化为 true 布尔值。我们将根据 showCheckBoxes 变量显示自定义下拉菜单的选项。

  • 步骤 5 − 每当用户单击下拉 div 元素时,根据 showCheckBoxes 变量的值更改选项 div 的显示。

  • 步骤 6 − 现在,定义一个 getOptions() 函数。在 getOptions() 函数中,访问所有选中的复选框,并使用 for 循环遍历 selectedOptions 数组来打印所有选中复选框的值。

示例 1

在下面的示例中,我们创建了如上算法中所述的自定义选择菜单。用户可以通过选中多个复选框来选择多个选项。

此外,当用户单击“获取选定的复选框”按钮时,它将调用 getOptions() 函数并打印所有选中复选框的值,这样我们就可以获取选择菜单的所有选中选项。

<html>
<head>
   <style>
      .dropdown {
         width: 12rem;
         height: 1.5rem;
         font-size: 1.3rem;
         padding: 0.6 0.5rem;
         background-color: aqua;
         cursor: pointer;
         border-radius: 10px;
         border: 2px solid yellow;
      }
      #options {
         margin: 0.5rem 0;
         width: 12rem;
         background-color: lightgrey;
         display: none;
         flex-direction: column;
         border-radius: 12px;
      }
      label {
         padding: 0.2rem;
      }
      label:hover {
         background-color: aqua;
      }
      button {
         font-size: 1rem;
         border-radius: 10px;
         padding: 0.5rem;
         background-color: yellow;
         border: 2px solid green;
         margin: 1rem 0;
      }
   </style>
</head>
<body>
   <h2>Creating the custom dropdown menu to use <i>Checkboxes</i> as an option.
   </h2>
   <div class = "dropdown" onclick = "showOptions()">
      show all options
   </div>
   <div id = "options">
      <label for = "one">
         <input type = "checkbox" id = "one" value = "First Option" />
            First Option
      </label>
      <label for = "two">
         <input type = "checkbox" id = "two" value = "Second Option" />
            Second Option
      </label>
      <label for = "three">
         <input type = "checkbox" id = "three" value = "Third Option" />
            Third Option
      </label>
      <label for = "four">
         <input type = "checkbox" id = "four" value = "Fourth Option" />
            Fourth Option
      </label>
      <label for = "five">
         <input type = "checkbox" id = "five" value = "Fifth Option" />
            Fifth Option
      </label>
   </div>
   <div id = "output"> </div>
   <button onclick = "getOptions()"> Get all Selected Checkboxes </button>
   <script>
      let output = document.getElementById('output');
      var showCheckBoxes = true;

      function showOptions() {
         var options =
            document.getElementById("options");

         if (showCheckBoxes) {
            options.style.display = "flex";
            showCheckBoxes = !showCheckBoxes;
         } else {
            options.style.display = "none";
            showCheckBoxes = !showCheckBoxes;
         }
      }
      function getOptions() {
         var selectedOptions = document.querySelectorAll('input[type=checkbox]:checked')
         output.innerHTML = "The selected options are given below. <br/>";
         for (var i = 0; i < selectedOptions.length; i++) {
            output.innerHTML += selectedOptions[i].value + " , ";
            console.log(selectedOptions[i])
         }
      }
   </script>
</body>
</html>

在本教程中,用户学习了如何使用 html、CSS 和 JavaScript 创建自定义选择菜单。此外,用户可以使用 Bootstrap 等一些 CSS 库来创建带有复选框的选择菜单。

更新于:2023年2月16日

8K+ 次浏览

启动您的职业生涯

完成课程后获得认证

开始学习
广告