elementui 表单验证集合

18 篇文章 2 订阅

1. 多个字段使用同个校验规则 validator

  { validator: validateIP, trigger: 'blur', name: '首选DNS', empty: true }
  { validator: validateIP, required: true, trigger: 'blur', name: '网关' }

可以在对象中扩展自定义参数,例如name,empty 等

统一在校验处理函数中通过rule 获取

callback(new Error(rule.name + '不能为空'))

可以实现提示字段变化,但是关键性的提示文案不变。

2. 多个表单一起校验

可以使用v-for 配合组件去调用

<div v-for="(item,index) in menuList" :key="item.val">
      <menu-form v-show="index === activeMenuIndex" :ref="'menuForm' + index" :component-index="index" @getGatewayInfo="getGatewayInfo" />
 </div>

其中有几个关键点:

  • v-for 的key:一般我们习惯性的会使用 :key="index" ,但是多行表单一般伴随着增删,所以此时的 key 就不可以绑定key ,而应该使用唯一的变量,例如id,name等
  • ref的使用:我们将子组件el-form 封装menu-form 中,这里ref 要使用拼接的方式,这里拼接采用的是index,为了之后遍历触发校验
  • 唯一id的使用:对于遍历的表单组件,需要传递一个唯一的下标(component-index),作用是在表单组件往外传参时区分是第几个组件传的参

3. 主动触发某几个字段,而不是触发全部

官方有api,这里使用 validateField

this.$refs.form.validateField('title')
this.$refs.form.validateField(['ip','username','pass'])

这里需要注意的是回调,这里返回的是err (错误信息)和 validate 返回的valid(是否合法),所以回调应该是这样使用

this.$refs.form.validateField(['ip','username','pass'],err=>{
	if(err){
		console.log("submit fail")
	}
});

4. 不通过blur,focus,change等事件主动触发校验

this.$refs['form'].fields[0].validateMessage = 'error message'
this.$refs['form'].fields[0].validateState = 'error'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值