当前位置:首页 > JavaScript

js 多选 实现

2026-01-16 12:38:10JavaScript

实现多选的 JavaScript 方法

使用复选框(Checkbox)实现多选

通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有选中的值。

<form id="multiSelectForm">
  <input type="checkbox" name="option" value="1"> Option 1<br>
  <input type="checkbox" name="option" value="2"> Option 2<br>
  <input type="checkbox" name="option" value="3"> Option 3<br>
  <button type="button" onclick="getSelectedOptions()">Submit</button>
</form>

<script>
function getSelectedOptions() {
  const checkboxes = document.querySelectorAll('input[name="option"]:checked');
  const selectedValues = Array.from(checkboxes).map(checkbox => checkbox.value);
  console.log(selectedValues);
}
</script>

使用 <select> 元素的 multiple 属性

HTML 的 <select> 元素可以通过设置 multiple 属性允许用户多选。JavaScript 可以获取所有选中的选项。

js 多选 实现

<select id="multiSelect" multiple>
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</select>
<button onclick="getSelectedOptions()">Submit</button>

<script>
function getSelectedOptions() {
  const selectElement = document.getElementById('multiSelect');
  const selectedOptions = Array.from(selectElement.selectedOptions).map(option => option.value);
  console.log(selectedOptions);
}
</script>

使用自定义 UI 组件实现多选

通过 JavaScript 和 CSS 创建自定义的多选组件,提供更好的交互体验。

js 多选 实现

<div class="custom-multi-select">
  <div class="selected-options" onclick="toggleOptions()">Select options...</div>
  <div class="options-container" id="optionsContainer">
    <div class="option" data-value="1">Option 1</div>
    <div class="option" data-value="2">Option 2</div>
    <div class="option" data-value="3">Option 3</div>
  </div>
</div>

<script>
function toggleOptions() {
  const container = document.getElementById('optionsContainer');
  container.style.display = container.style.display === 'none' ? 'block' : 'none';
}

document.querySelectorAll('.option').forEach(option => {
  option.addEventListener('click', function() {
    this.classList.toggle('selected');
    updateSelectedOptions();
  });
});

function updateSelectedOptions() {
  const selectedOptions = document.querySelectorAll('.option.selected');
  const selectedValues = Array.from(selectedOptions).map(option => option.getAttribute('data-value'));
  console.log(selectedValues);
}
</script>

使用第三方库实现多选

许多第三方库如 Select2、Choices.js 提供了丰富的多选功能,可以简化开发。

<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

<select class="js-example-basic-multiple" multiple>
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</select>

<script>
$(document).ready(function() {
  $('.js-example-basic-multiple').select2();
});
</script>

实现多选表格行

在表格中实现多选功能,通常用于批量操作。

<table id="multiSelectTable">
  <tr>
    <td><input type="checkbox" class="row-checkbox"></td>
    <td>Row 1</td>
  </tr>
  <tr>
    <td><input type="checkbox" class="row-checkbox"></td>
    <td>Row 2</td>
  </tr>
  <tr>
    <td><input type="checkbox" class="row-checkbox"></td>
    <td>Row 3</td>
  </tr>
</table>
<button onclick="getSelectedRows()">Submit</button>

<script>
function getSelectedRows() {
  const checkboxes = document.querySelectorAll('.row-checkbox:checked');
  const selectedRows = Array.from(checkboxes).map(checkbox => {
    return checkbox.closest('tr').querySelector('td:last-child').textContent;
  });
  console.log(selectedRows);
}
</script>

这些方法涵盖了从基础到高级的多选实现方式,可以根据具体需求选择合适的方法。

标签: 多选js
分享给朋友:

相关文章

vue 实现多选框

vue 实现多选框

Vue 实现多选框的方法 使用 v-model 绑定数组 在 Vue 中,可以通过 v-model 绑定一个数组来实现多选框的选择功能。每个复选框的 value 属性会被添加到数组中,取消勾选时则从数…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promis…

vue图片实现多选

vue图片实现多选

Vue图片多选实现方法 基础实现方案 使用v-model绑定数组配合input[type="checkbox"]实现多选功能。创建图片列表数据时,每个图片对象应包含唯一标识符: data() {…

vue实现多选联动

vue实现多选联动

实现多选联动的基本思路 在Vue中实现多选联动功能,通常需要利用v-model绑定数据、监听选项变化以及动态更新关联选项。以下是几种常见的实现方式: 基于v-model和计算属性 通过v-model…