模拟表格数据添加&表单进行校验

735 阅读1分钟

「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。

首先使用Element Table表格框架代码对我们的模拟信息进行页面渲染

:data="tableData" 遍历tableData中的信息 stripe设置为带斑马纹表格 prop属性对应字段名

<el-table :data="tableData" stripe>
    <el-table-column prop="date" label="日期" width="180"> </el-table-column>
    <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
    <el-table-column prop="address" label="地址"> </el-table-column>
</el-table>

data() {
    return {
      tableData: [{
        date: '2022-01-01',
        name: '王小虎',
        address: '上海市普陀区'
      },{
        date: '2022-01-03',
        name: '王大虎',
        address: '长沙市岳麓区'
      }]
    }
  },

目前显示页面效果 image.png

我们现在对表格进行添加信息操作,将输入的信息存入tableData中,并显示在页面,首先创建一个form表单进行添加

其中inline 属性可以让表单域变为行内的表单域, 创建一个空的formData来接收输入的内容,使用 v-model进行输入框的绑定

    <el-form :inline="true" class="demo-form-inline">
        <el-form-item label="姓名">
          <el-input v-model="formData.name" placeholder="姓名"></el-input>
        </el-form-item>
         <el-form-item label="地址">
          <el-input type="textarea" v-model="formData.address" placeholder="地址"></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="add">添加</el-button>
        </el-form-item>
      </el-form>

image.png

输入完成后执行add方法,进行添加操作,在将输入框内容添加进tableData之前,对日期进行格式的转换,如果需要多次在不同的地方进行转换的话,可以使用过滤器进行管理( Vue.filter )

image.png

add() {
      var date = new Date()
      var y = date.getFullYear();
      var m = ( date.getMonth()+1 ).toString().padStart(2, '0');
      var d = date.getDate(); 
      var now = `${y}-${m}-${d}`
      this.tableData.push({
        name: this.formData.name,
        address: this.formData.address,
        date: now
      });
      this.formData.name = this.formData.address = '';
    },

el-form还有一个很有意思的表单验证,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item的 prop 属性设置为需校验的字段名就可以实现

改变el-form的表头

<el-form ref="FormRef" :rules="FromRules" :model="formData" :inline="true" class="demo-form-inline">

分别给name 和 address 加上<el-form-item label="姓名" prop="name"> prop属性

在data中添加表单的验证规则对象

    FromRules: {
      name: [
        { required: true, message: "请输入姓名", trigger: "blur" },
      ],
      address: [
        { required: true, message: "请输入地址", trigger: "blur" }
      ]
    }

在添加之前执行判断,如果符合验证规则就执行添加操作否则直接返回,验证规则会自动弹出错误提示

add() {
      this.$refs.FormRef.validate(async (vaild) => {
        if (!vaild) {
          return;
        }else{
            巴拉巴拉执行添加
        }
      }

有了校验我们就不会出现空白字段存入了

最后效果:

1643383949781.gif