element ui多选框组checkbox-group的使用

本文介绍了如何在Vue项目中利用Element UI的el-checkbox-group组件来管理一组多选框。通过v-model绑定Array类型的变量checkList,可以轻松实现多选框的选择状态管理。每个el-checkbox的label属性用于标识选项值,同时作为选中后的数据存储。默认选中和未选中状态可以通过checked属性设置。在变更事件change中,可以处理选中项的逻辑。示例代码展示了如何遍历groupList创建多选框,并根据item.id和item.checked进行初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

checkbox-group元素能把多个 checkbox 管理为一组,只需要在 Group 中使用v-model绑定Array类型的变量即可。el-checkbox 的 label属性是该 checkbox 对应的值,若该标签中无内容,则该属性也充当 checkbox 按钮后的介绍。

使用vue实现

template中
<template>
  <div class="checkbox-group">
    <el-checkbox-group v-model="checkList">
      <el-checkbox 
        :key="item.id"
        v-for="item in groupList"
        :label="item.id"
        :checked="item.checked"
        @change="changeSelect"   //当绑定值变化时触发的事件
      >{{item.name}}</el-checkbox>
    </el-checkbox-group>
  </div>
</template>

注:label之所以使用item.id而不是item.name是因为v-model绑定的checkList(数组:包含已选中的选项)与label是同一个数据。(意思就是,label绑定的是啥,选中后,checkList里面就有啥),为了以后方便处理,选用id。

data中
data() {
      return {
        //多选框选中的数据的id集合
        checkList: [],
        groupList: [
          {
            id: 'time',
            name: '时间',
            checked: true,   //默认选中
          },
          {
            id: 'number,
            name: '数量',
            checked: false,    //默认不选
          },
        ]
      }
    },

官网链接:https://element.eleme.cn/#/zh-CN/component/checkbox

### Vue使用 Element-UI 的 `el-checkbox-group` 件结合文本框 在 Vue 应用程序中,可以轻松地将 `el-checkbox-group` 和输入框合在一起以创建更复杂的表单。这允许用户不仅可以选择多个选项,还可以为每个选择提供额外的信息。 #### 基础结构设置 为了实现这一功能,首先需要安装并引入 Element UI 或者仅导入所需的件: ```bash npm install element-ui --save ``` 接着,在 main.js 文件里注册整个库或按需加载特定部件[^1]。 #### HTML 部分定义 下面是一个简单的例子来展示如何把复选框同文本区域关联起来: ```html <template> <div id="app"> <!-- 定义一个 el-form 表单 --> <el-form :model="form" label-width="80px"> <el-form-item label="活动形式"> <!-- 使用 v-model 将数据绑定到 form.selectedOptions 上 --> <el-checkbox-group v-model="form.selectedOptions"> <el-checkbox-button v-for="(item, index) in options" :label="item.value" :key="index">{{ item.label }}</el-checkbox-button> </el-checkbox-group> <!-- 动态渲染对应的 input 输入框 --> <div v-for="(inputField, idx) in form.inputs" :key="'input-' + idx" style="margin-top: 10px;"> {{ inputField.placeholder }}: <el-input v-model="inputField.value"></el-input> </div> <!-- 添加新 Input 按钮 --> <el-button type="primary" @click="addInput">新增</el-button> </el-form-item> <!-- 提交按钮 --> <el-form-item> <el-button type="success" @click="onSubmit">提交</el-button> </el-form-item> </el-form> </div> </template> ``` #### JavaScript 数据处理逻辑 接下来是脚本部分,这里管理着状态以及交互行为: ```javascript <script> export default { data() { return { // 初始化表单项的数据模型 form: { selectedOptions: [], // 存储已勾选项的数 inputs: [] // 记录动态添加的文本框列表 }, // 可供选择的项目集合 options: [ { value: 'option1', label: '吃饭' }, { value: 'option2', label: '睡觉' }, { value: 'option3', label: '打豆豆' } ] }; }, methods: { addInput(event){ const lastSelectedOption = this.form.selectedOptions[this.form.selectedOptions.length - 1]; if (lastSelectedOption !== undefined && !this.isExisting(lastSelectedOption)) { this.form.inputs.push({ placeholder: "请输入关于 '" + this.getOptionLabelByValue(lastSelectedOption) + "' 的更多信息", value: '' }); } else { console.log('请先选择一项'); } }, isExisting(valueToCheck){ let result = false; for(let i=0; i<this.form.inputs.length;i++){ if(this.options.find(option => option.value === this.form.inputs[i].placeholder.split("'")[1]).value===valueToCheck){ result=true; break; } } return result; }, getOptionLabelByValue(value){ var foundItem=this.options.find(item=>item.value==value); return foundItem?foundItem.label:''; }, onSubmit(){ alert(JSON.stringify(this.form)); } } }; </script> ``` 此代码片段展示了如何通过监听用户的操作来自动生成新的 `<el-input>` 控件,并将其与相应的复选框联系起来。每当有新的条目被加入时,都会触发一次更新,从而保持界面同步显示最新的状态变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值