Vue3 element ui 中多个form表单使用同一个表单必填校验规则

多个表单使用同一个校验规则 ,点击按钮的时候一起校验

  • 在vue页面中有多个form对象,且绑定了多个数据对象,使用的同一个必填校验规格;html文件如下:

<template>
  <!--第一个form对象,:model="formData"绑定的数据  :rules="rules"定义的规则-->
  <el-form :model="formData" :rules="rules" ref="form">
    <el-form-item label="用户名" prop="username">
      <el-input v-model="formData.username"></el-input>
    </el-form-item>
    <el-form-item label="密码" prop="password">
      <el-input type="password" v-model="formData.password"></el-input>
    </el-form-item>
  </el-form>
 
  <!--第二个form对象,:model="formData"绑定的数据  :rules="rules"定义的规则-->
  <el-form :model="formData2" :rules="rules" ref="form2">
    <el-form-item label="邮箱" prop="email">
      <el-input v-model="formData2.email"></el-input>
    </el-form-item>
  </el-form>
 
  <el-button @click="submitForm">提交</el-button>
</template>
 
  • 在JS中进行校验,点击按钮同时校验两个或者多个form对象中的必填,且同时通过后才能执行后续操作,代码如下: 
<script setup>
import { reactive, ref } from 'vue';
 
//定义的数据变量对象,存储的数据
const formData = reactive({
  username: '',
  password: '',
  email: ''
});
 //此处省略简单使用赋值的同一个,如有不同自行定义
const formData2 = formData;
 
// 定义表单校验必填的规则
const rules = {
  username: [
    { required: true, message: '请输入用户名', trigger: 'blur' }
  ],
  password: [
    { required: true, message: '请输入密码', trigger: 'blur' },
    { min: 6, max: 12, message: '密码长度在 6 到 12 个字符', trigger: 'blur' }
  ],
  email: [
    { required: true, message: '请输入邮箱', trigger: 'blur' },
    { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
  ]
};
 
// 必填校验使用的变量
const form = ref(null);
const form2 = ref(null);
 
// 点击按钮触发的事件
const submitForm = () => {
  
 //这里使用Promise.all来回调函数进行监听,成功通过校验的在then中进行逻辑校验 ,失败则打印和提示错误
  Promise.all([form.value.validate(), form2.value.validate()]).then(() => {
    //必填校验成功
    console.log('两个表单验证通过,可以提交数据:', formData);
    // 这里执行你的提交操作
  }).catch((error) => {
    // 必填校验失败
    if (error.error) {
      console.error('验证失败', error.error);
    }
  });
};
</script>
  • 运行结果 
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3 Element Plus是一套基于Vue3的UI组件库提供了丰富的组件和功能,其包括了Form表单组件。在Element Plus,可以通过动态校验来实现同一字段的表单动态校验。 在Vue3 Element Plus,可以使用`el-form`组件来创建表单,通过`el-form-item`组件来包裹表单。要实现同一字段的表单动态校验,可以使用`rules`属性来定义校验规则。 首先,需要在Vue组件定义表单数据和校验规则。例如: ```javascript data() { return { form: { field1: '', field2: '' }, rules: { field1: [ { required: true, message: '字段1不能为空', trigger: 'blur' }, // 其他校验规则 ], field2: [ { required: true, message: '字段2不能为空', trigger: 'blur' }, // 其他校验规则 ] } } } ``` 然后,在模板使用`el-form`和`el-form-item`组件来创建表单,并绑定数据和校验规则。例如: ```html <template> <el-form :model="form" :rules="rules" ref="form"> <el-form-item label="字段1" prop="field1"> <el-input v-model="form.field1"></el-input> </el-form-item> <el-form-item label="字段2" prop="field2"> <el-input v-model="form.field2"></el-input> </el-form-item> </el-form> </template> ``` 最后,可以通过调用`validate`方法来触发表单校验。例如: ```javascript methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 校验通过,提交表单 } else { // 校验不通过,处理错误信息 } }); } } ``` 这样,就可以实现同一字段的表单动态校验了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值