element-ui的el-form表单和el-table校验嵌套使用校验el-input和el-select

这篇具有很好参考价值的文章主要介绍了element-ui的el-form表单和el-table校验嵌套使用校验el-input和el-select。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景:前端开发中,经常会遇到比较多的表单填写页面,其中有el-form,el-table,表格的每一列中又嵌套着输入框或者下拉框,然后每个还需要做单独的校验

效果:

  点击保存可校验el-input和el-select是否有值,不符合校验规则就标红提醒

el-table el-form校驗,工作积累,vue.js,elementui,javascript

 

1.el-form嵌套el-table

  • 1.el-form里面嵌套el-table
    <el-form :model="formData" :rules="formData.rules" ref="formRef">
        <el-table
           :data="formData.tableData"
           style="width: 100%">
           <el-table-column
             prop="id"
             label="单号"
             width="100">
           </el-table-column>
         </el-table>
    </el-form>
    
  • 2.在el-table-column自定义内容里面,嵌套el-form-item,里面再放el-input或者el-select结构
     <el-table-column
       prop="name"
        label="商品名"
        width="180">
        <template slot-scope="scope">
            <el-form-item>
              <el-input v-model="scope.row.name"></el-input>
            </el-form-item>
        </template>
      </el-table-column>
    
  • 3.数据的结构
    因为el-form是最外层的,所以formData是个对象,对象里放el-table用到的数组和rules
    这样定义是为了校验时用到rules

 

 formData: {
    rules: {
        name: {
          required: true,
          message: '请输入商品名',
          tirgger: ['blur', 'change']
        },
        selected: {
          required: true,
          message: '请选择',
          tirgger: 'change'
        }
      },
      tableData: [
        {id: '001'},
        {id: '002'},
        {id: '003'},
      ]
    },

2.定义规则

1.el-form绑定: rules使用formData.rules整个对象,同时定义一个ref

<el-form :model="formData" :rules="formData.rules" ref="formRef">

2.保证prop必须唯一
自定义prop:使用 列表数据属性名+列的下标scope.$index+列的数据属性名

 <el-table-column
   prop="name"
    label="商品名"
    width="180">
    <template slot-scope="scope">
        <el-form-item :prop="'tableData.' + scope.$index + '.name'" :rules="formData.rules.name">
          <el-input v-model="scope.row.name"></el-input>
        </el-form-item>
    </template>
  </el-table-column>

注意:如果不是使用列表数据属性名tableData,会出现报错
Error: please transfer a valid prop path to form item

 3.保证每一个el-form-item都要配置rules属性
rules使用formData.rules对应的属性的规则文章来源地址https://www.toymoban.com/news/detail-784736.html

3.完整代码

<template>
  <div>
    <el-form :model="formData" :rules="formData.rules" ref="formRef">
      <el-table
        :data="formData.tableData"
        style="width: 100%">
        <el-table-column
          prop="id"
          label="单号"
          width="100">
        </el-table-column>
        <el-table-column
          prop="name"
          label="商品名"
          width="180">
          <template slot-scope="scope">
            <el-form-item :prop="'tableData.' + scope.$index + '.name'" :rules="formData.rules.name">
              <el-input v-model="scope.row.name"></el-input>
            </el-form-item>
          </template>
        </el-table-column>
        <el-table-column
          prop="class"
          label="分类">
          <template slot-scope="scope">
           <el-form-item :prop="'tableData.' +scope.$index + '.class'" :rules="formData.rules.selected">
             <el-select v-model="scope.row.class">
                <el-option
                  v-for="item in classOption"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                ></el-option>
              </el-select>
           </el-form-item>
          </template>
        </el-table-column>
      </el-table>
    </el-form>
    <el-button @click="submitForm('formRef')">提交</el-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      formData: {
        rules: {
          name: {
            required: true,
            message: '请输入商品名',
            tirgger: ['blur', 'change']
          },
          selected: {
            required: true,
            message: '请选择',
            tirgger: 'change'
          }
        },
        tableData: [
          {id: '001'},
          {id: '002'},
          {id: '003'},
        ]
      },
      classOption: [
        {
          value: 0,
          label: '分类1'
        },
        {
          value: 0,
          label: '分类1'
        }
      ]
    }
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert('submit!');
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
  }
}
</script>

到了这里,关于element-ui的el-form表单和el-table校验嵌套使用校验el-input和el-select的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在vue项目里,Element-Ui中el-form 实现一行两个表单效果

    1.首先使用elementUi中的Layout 24分栏进行布局,将整个form表单放入24分栏里 如图所示: 2.再将需要同行显示的表单放入el-row中的el-col中去 3.然后再根据你的需求控制一下表单大小就ok啦  全部代码: 效果图如下:  

    2024年02月11日
    浏览(35)
  • el-form 动态表单增减项 (vue+element ui)

    1、点击”+“,弹出弹窗,新增一项,点击”-“,删除当前项 代码展示: html代码: 注意: el-form-item(表单项)循环,绑定的数组写在form当中 表单: 新增参数弹框: data: methods: 1、点击新增,弹出新增弹窗,添加表单项 2、点击”-“,删除当前表单项

    2024年02月02日
    浏览(34)
  • 【element-ui】 el-form之rules赋值后校验没消失

    错误原因是在return中定义了一个空对象formLabel,在校验过程中,formRules值找不到对应的formLabel值,此时就出现了在输入框中赋值之后,校验不消失 解决方案:

    2024年02月09日
    浏览(28)
  • Element-UI中el-form内部在输入框回车导致刷新页面的问题解决。

    当 el-form 表单里面只有一个 el-input 输入框的时候,在输入框选中时按回车会刷新页面: 默认情况下, el-form 中只有一个输入框时, el-form 会自动为输入框添加一个 type=\\\"submit\\\" 的按钮,当按下回车键时,该按钮会触发表单的提交事件。 在el-form标签内加入 @submit.native.prevent 即可

    2024年02月11日
    浏览(40)
  • [element-ui] el-table点击高亮当前行

    1、highlight-current-row 2、:row-class-name=“tableRowClassName”,需要借助@row-click=\\\"handleRowClick\\\"获取当前点击行的下标 参考: elementUI中table点击高亮当前行的两种方式

    2024年03月21日
    浏览(35)
  • element-ui中的el-table合并单元格

    在写项目的时候有时候会经常遇到把行和列合并起来的情况,因为有些数据是重复渲染的,不合并行列会使表格看起来非常的混乱,如下:  而我们想要的数据是下面这种情况,将重复的行进行合并,使表格看起来简单明了,如下:   1:html部分 所谓的合并行就是将多行相同

    2024年02月10日
    浏览(26)
  • element-ui el-table 树形结构 父子级联动

    el-table 表格 为 select 和 select-all 设置回调函数 简要数据格式 单选 全选 操作 ids 不再设置 selection-change 回调函数,直接监听ids 感谢 element-ui el-table 实现全选且父级子级联动 提供的思路 另附 el-table 文档

    2024年02月10日
    浏览(29)
  • [element-ui] el-table行添加阴影悬浮效果

    问题: 在el-table每一行获得焦点与鼠标经过时,显示一个整行的阴影悬浮效果 没有什么效果 原因: box-shadow对display:table-row元素是不起作用的 解决方案: 弊端 给el-table行加阴影的问题算是解决了,但是却导致表格内容无法操作 1、通常,项目设计中,el-table会带一些按钮,比如

    2024年02月04日
    浏览(31)
  • vue使用element-ui,el-table不显示

    例如:新增了一个表格,按官网代码贴过来的,结果一直不显示 代码如下一模一样,其他数据正常显示,就表格不显示 其实版本库不一致导致的,贼坑,又不提示 先卸载element-ui安装一个低版本的element-ui就可以解决``

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包