elementUI——el-form表单数据校验(包含数组循环)

一、普通的值类型的数据校验

  • 设置 el-form-item 的 prop 值 与 formdata 中定义的 key 保持一致`
  • 如果 rules 需要通过 el-form 统一设置,rules 的 key 定义也与 prop 保持一致(如果不一致,需要在 el-form-item 中 手动指定)
  • 复杂的校验函数可通过 validator 单独定义
<el-form
  class="demo-form"
  :model="form"
  :rules="rules"
>
  <el-form-item label="数据库库名:" prop="database">
	 <el-input v-model="form.database" placeholder="请输入数据库库名"> </el-input>
  </el-form-item>
  <el-form-item label="数据表名称:" prop="sheet">
   	 <el-input v-model="form.sheet" placeholder="请输入数据表名称"> </el-input>
  </el-form-item>
</el-form>

<script>
import { Reg_w } from '@/utils/reg'
export default {
  data() {
	// 数据库表名校验
    let validatorSheet = (rule, value, callback) => {
      if (!value) {
        callback(new Error('请输入数据表名称'))
      } else if (!Reg_w(value)) {
        callback(new Error('表名称仅支持字母数字下划线组合'))
      } else {
        callback()
      }
    }
    return {
      // 表单数据
      form: {
        // 数据表名称
        sheet: undefined,
        // 数据库库名
        database: undefined,
      },
      // 校验规则
      rules: {
        sheet: [{ required: true, validator: validatorSheet, trigger: 'blur' }],
        database: [{ required: true, message: '请输入数据库库名', trigger: 'blur' }],
      },
    }
  },
}
</script>

二、表单数据为数组,数组循环中的每个字段需要校验

在上述使用方式的基础上,需要额外注意:
  • prop 在循环中需要对应到 formdata 中 数组的某一项具体值,可以利用 index 等变量 进行锁定,再取到 具体的key
  • v-model 结合循环正常使用
  • el-form-itemrules 需要 手动指定
<el-form
  class="demo-form"
  :model="form"
  :rules="rules"
>
  <div v-for="(item, index) in form.fieldList" :key="item.id" class="sheet-item">
    <!-- 字段名称 -->
    <el-form-item :prop="`fieldList[${index}][field]`" :rules="rules.field_name">
      <el-input v-model="item.field" placeholder="请输入字段名"> </el-input>
    </el-form-item>
    <!-- 字段注释 -->
    <el-form-item :prop="`fieldList[${index}][comment]`" :rules="rules.field_comment">
      <el-input v-model="item.comment" placeholder="请输入字段注释"> </el-input>
    </el-form-item>
  </div>
</el-form>

<script>
export default {
  data() {
    return {
      // 表单数据
      form: {
        // 表单字段列表
        fieldList: [
		  //内部是这样的格式: { id: 1, field: '字段1', comment: '注释1' } 
		],
      },
      // 校验规则
      rules: {
        field_name: [{ required: true, message: '请输入字段名', trigger: 'blur' }],
        field_comment: [{ required: true, message: '请输入字段注释', trigger: 'blur' }],
      },
    }
  },
}
</script>
欢迎留言,一起探索更多~
  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!对于ElementUI中的el-date-picker,您可以使用自定义校验规则来进行校验。以下是一个示例代码: ```html <template> <el-form :model="form" ref="form" :rules="rules"> <el-form-item label="日期" prop="date"> <el-date-picker v-model="form.date" type="date"></el-date-picker> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { date: '' }, rules: { date: [ { required: true, message: '请选择日期', trigger: 'blur' }, { validator: this.validateDate, trigger: 'blur' } ] } }; }, methods: { validateDate(rule, value, callback) { if (value && value < new Date()) { callback(new Error('所选日期不能早于当前日期')); } else { callback(); } }, submitForm() { this.$refs.form.validate(valid => { if (valid) { // 校验通过,执行提交操作 console.log('提交表单'); } else { // 校验未通过,提示错误信息 console.log('表单校验未通过'); } }); } } }; </script> ``` 在示例代码中,我们使用了自定义校验规则`validateDate`来判断选择的日期是否早于当前日期。通过`validator`属性将该校验规则添加到`date`字段的校验规则列表中。当点击提交按钮时,通过调用`this.$refs.form.validate`方法进行表单校验校验通过则执行提交操作,否则提示错误信息。 希望以上信息对您有所帮助!如果您还有其他问题,请继续提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值