解决elementUI select multiple多选下拉框, 赋值和传值到后台处理操作

实现多选下拉框后,表单中的内容不在是字符串的类型,而是变成了数组的类型,点击添加按钮后,会报错的,因为原来该字段的类型是字符串,类型不匹配。 

解决方案:

1. 首先需要在添加事件中处理数据,然后再传给后端

需要将数组类型的数据转为字符串的类型,然后再提交表单,将传递给后端

    let ct = []
    if (this.form.collegeType){
        for (let i=0; i<this.form.collegeType.length; i++) {
           ct.push(this.form.collegeType[i])
        }
        this.form.collegeType =  ct.join("-")   // 通过"-"连接成字符串
        console.log(this.form.collegeType, "this.form.collegeType")   // ?-?
    }

2. 前端处理从后端查询的数据

数据以字符串的形式添加到数据库后,前端需要查询数据,并需要再将字符串类型转为数组类型,便于使用

/* 处理从后端返回前端的学校类型 */
let TypeArr = [];
this.collegeList.forEach((college, index) => {
 if (index >= this.newCollegeTypeArr.length) {
      const arrCollegeTypes = college.collegeType.split("-");
      arrCollegeTypes.forEach(type => {
      TypeArr.push(parseInt(type));
      });
  }
 });
 this.newCollegeTypeArr = TypeArr;
 this.form.collegeType = this.newCollegeTypeArr;
 console.log(this.form.collegeType, "this.newCollegeTypeArr111")

3. 利用数据

我主要是需要遍历数据,将数据以字典中标签的形式展示出来

      <el-table-column label="学校类型" align="center" prop="collegeType" min-width="300%">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_school_type" v-for="(type,index) in scope.row.collegeType" :key="`${index}-${type}`" :value="type"
            :separator="' '"/>
        </template>
      </el-table-column>

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于 `el-select` 多选表单,你可以使用以下方法进行验证: 1. 使用 `rules` 属性:在 `el-form-item` 组件上,设置 `rules` 属性,该属性是一个数组,可以包含多个验证规则。例如: ```html <el-form-item label="多选表单" prop="selectedOptions" > <el-select v-model="selectedOptions" multiple placeholder="请选择" :clearable="true"> <!-- options --> </el-select> </el-form-item> ``` ```javascript data() { return { selectedOptions: [] }; }, ``` ```javascript rules: { selectedOptions: [ { required: true, message: '请选择至少一个选项', trigger: 'blur' }, { type: 'array', min: 1, message: '请选择至少一个选项', trigger: 'change' } ] } ``` 上述代码中,我们使用了两个验证规则:`required` 和 `type`。`required` 规则表示该字段必填,`type` 规则表示值的类型是数组。 2. 手动验证:你也可以通过手动触发验证的方式来验证多选表单。在表单提交或者其他需要验证的时候,调用 `validate` 方法来进行验证。例如: ```html <el-form ref="form" :model="formData" :rules="rules"> <el-form-item label="多选表单" prop="selectedOptions" > <el-select v-model="selectedOptions" multiple placeholder="请选择" :clearable="true"> <!-- options --> </el-select> </el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form> ``` ```javascript methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 表单验证通过,执行提交操作 } else { // 表单验证不通过 } }); } } ``` 在 `submitForm` 方法中,我们调用了 `validate` 方法来进行表单验证,并根据返回的 `valid` 值来判断验证结果。 这些方法可以帮助你对 `el-select` 多选表单进行验证。根据你的实际需求,选择适合的方法进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小蟹呀^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值