当前位置:首页 > VUE

vue 实现多选功能

2026-01-15 23:14:22VUE

Vue 实现多选功能的方法

使用 v-model 绑定数组

在 Vue 中,可以通过 v-model 绑定一个数组来实现多选功能。适用于复选框组(checkbox)或下拉多选(select multiple)。

<template>
  <div>
    <h3>选择你喜欢的编程语言:</h3>
    <label v-for="lang in languages" :key="lang">
      <input type="checkbox" :value="lang" v-model="selectedLanguages">
      {{ lang }}
    </label>
    <p>已选择:{{ selectedLanguages }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      languages: ['JavaScript', 'Python', 'Java', 'C++'],
      selectedLanguages: []
    };
  }
};
</script>

使用第三方组件库

对于更复杂的需求(如表格多选、标签式多选),可以使用第三方 UI 库:

vue 实现多选功能

  • Element UIel-checkbox-groupel-select 多选模式
  • Vuetifyv-checkboxv-select 多选
  • Ant Design Vuea-checkbox-groupa-select 多选

以 Element UI 为例:

vue 实现多选功能

<template>
  <el-checkbox-group v-model="selectedOptions">
    <el-checkbox v-for="option in options" :key="option" :label="option">
      {{ option }}
    </el-checkbox>
  </el-checkbox-group>
</template>

自定义多选逻辑

如果需要完全自定义逻辑(如点击 div 多选),可以通过事件和数组操作实现:

<template>
  <div>
    <div 
      v-for="item in items" 
      :key="item.id"
      @click="toggleSelection(item)"
      :class="{ 'selected': isSelected(item) }"
    >
      {{ item.name }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '选项1' },
        { id: 2, name: '选项2' }
      ],
      selectedItems: []
    };
  },
  methods: {
    toggleSelection(item) {
      const index = this.selectedItems.findIndex(i => i.id === item.id);
      if (index >= 0) {
        this.selectedItems.splice(index, 1);
      } else {
        this.selectedItems.push(item);
      }
    },
    isSelected(item) {
      return this.selectedItems.some(i => i.id === item.id);
    }
  }
};
</script>

多选表格实现

结合表格组件实现行多选功能(以 Element UI 为例):

<template>
  <el-table
    ref="multipleTable"
    :data="tableData"
    @selection-change="handleSelectionChange"
  >
    <el-table-column type="selection" width="55"></el-table-column>
    <el-table-column prop="name" label="名称"></el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '数据1' },
        { name: '数据2' }
      ],
      multipleSelection: []
    };
  },
  methods: {
    handleSelectionChange(val) {
      this.multipleSelection = val;
    }
  }
};
</script>

注意事项

  1. 使用 v-model 绑定时,初始值需设为空数组 [],否则可能导致非数组类型错误
  2. 对于动态渲染的选项,确保 :key 唯一性
  3. 多选下拉(<select multiple>)需按住 Ctrl/Command 键选择

标签: 多选功能
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaS…

vue实现答题功能

vue实现答题功能

Vue实现答题功能 数据准备 创建一个包含题目、选项和正确答案的数据结构,通常是一个数组对象。每个题目对象包含问题文本、选项数组和正确答案索引。 const questions = [ {…

vue实现复选功能

vue实现复选功能

Vue 实现复选功能 基础实现 使用 v-model 绑定到数组实现多选功能。当复选框被选中时,其 value 会被添加到数组中;取消选中时,会从数组中移除。 <template>…

vue实现模态功能

vue实现模态功能

Vue 实现模态框功能 方法一:使用组件和v-if/v-show控制显示 创建独立的模态框组件(如Modal.vue),通过props接收标题、内容等数据,使用v-if或v-show控制显示状态。…

h5能实现抽题功能吗

h5能实现抽题功能吗

H5实现抽题功能的技术方案 H5完全能够实现抽题功能,主要通过前端技术结合后端数据交互完成。以下是具体实现方式: 前端技术实现 HTML5结合JavaScript可以动态生成和展示题目,利用DOM操…

vue实现循环多选

vue实现循环多选

实现循环多选的方法 使用v-for渲染选项 通过v-for循环渲染复选框或列表项,绑定v-model到数组实现多选。例如: <template> <div v-for="it…