自定义的组件如何触发element ui的表单校验

碰到一个问题,如果用原生html封装组件会无法触发element ui的表单校验,需要点击提交按钮才能校验。
rules里的trigger: 'blur’已经不起效了。
研究了一下解决办法。
主要发现有两招:
1、在父组件里手动触发el-form里的validateField事件

<childComponent v-model="ruleForm.fatherValue" @input="validateField('fatherValue')"/>

validateField(type) {
   this.$refs.ruleForm.validateField(type);
}

但是如果每次都在父组件里手动触发有点太沙雕了。
有没有办法可以直接写在子组件里呢?
那么看一下方法二。

2、在子组件里触发表单校验

<input type="text" name="" id="" :value="currentValue" @blur="handleBlur" @input="valueChange">

// methods里这么写
handleBlur(val) {
    this.$emit('blur', val.target.value);
    this.dispatch('ElFormItem', 'el.form.blur', [this.currentValue]);
},

// dispatch在element-ui/src/mixins/emitter里,引进来使用,或直接写进methods里也可以
dispatch(componentName, eventName, params) {
 var parent = this.$parent || this.$root;
 var name = parent.$options.componentName;
 while (parent && (!name || name !== componentName)) {
     parent = parent.$parent;
     if (parent) {
     name = parent.$options.componentName;
   	}
  }
  if (parent) {
    parent.$emit.apply(parent, [eventName].concat(params));
	}
},

如果不是blur,是change,就这样写:

this.dispatch('ElFormItem', 'el.form.change', [this.currentValue]);
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Element UI中进行表单校验,可以按照以下步骤操作: 1. 在el-form元素上添加校验规则字段rules,并将其绑定到一个对象上。例如,在data中定义一个名为rules的对象,并将其绑定到el-form上::rules="rules"。 2. 在script标签中定义rules对象,并在该对象中添加要校验的字段及其校验规则。每个字段的校验规则是一个数组,包含一个或多个校验规则对象。例如,要校验用户名字段,可以使用以下格式进行配置: ``` rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' } ] } ``` 这个例子中的校验规则要求用户名字段不能为空,且在表单失去焦点时触发校验。你可以根据需求自定义校验规则。 3. 在el-form-item元素内部的el-input组件上添加需要校验的字段名。例如,要校验用户名字段,可以在el-input上添加prop属性并将其值设置为"username"。 4. 如果还需要在提交表单时进行整体校验,可以使用el-form组件的validate方法。在点击提交按钮或其他触发表单提交的事件时,调用validate方法即可。例如,可以在按钮的点击事件中添加以下代码: ``` this.$refs.form.validate((valid) => { if (valid) { // 表单校验成功,执行提交操作 } else { // 表单校验失败,给出相应提示 } }); ``` 这个例子中的代码会对整个表单进行校验,并在校验完成后的回调函数中判断校验结果。如果valid为true,则表示校验通过;如果valid为false,则表示校验不通过。 以上是在Element UI中进行表单校验的基本步骤。你可以根据实际需求自定义校验规则,并根据校验结果进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值