element-plus表单校验走el-form的rules——vue3

前提

有一个el-from有校验规则,不能为空。我写的规则为必填,失焦触发校验:

const state = reactive({
  users: [],
  currentPage: 1, // 当前页
  pagesize: 2, // 每页显示2条
  userFormDialogVisble: false, // 是否展示用户表单
  userFormData: {
    username: ''
  },
  rules: {
    username: [
      {
        required: true,
        message: "请输入用户名",
        trigger: 'blur'
      },
    ]
  },
  formTitle: "",
  showSetRoleDialog: false,
  currentUserId: 0,
})

正常的交互应该是:
在这里插入图片描述
但是当用户进入该页面不点击输入框的时候,就不会触发校验逻辑,可以向后端提交一个空。
我当时亡羊补牢的做法是,单独加一个判断,判断该字段是否为空:

const handleConfirm = () => {
  if (state.userFormData.username === "") {
    ElMessage.error("用户名不能为空")
  } else {
		//逻辑
	}

后面带佬指出:这就是shi代码,这个逻辑简单我可以这么写。如果需要校验的字段很多,就需要一个一个去判断,而且展示也会出问题,ElMessage展示出来的永远之后最后面的错误,改完最后一个错误才会向前校验。
查阅文档发现el-form自带校验逻辑:validate。用法就是ref.validate

vue3与2获取DOM的方法略有一丝不同
给需要获取的html元素加ref

<el-form ref="userForm" :model="state.userFormData" label-width="100px" :rules="state.rules">

创建ref响应式常量,名字要与html中的ref名字一致。

import {......, ref } from 'vue';

//创建ref响应式常量
const userForm = ref<any>()

再点击事件中添加判断,用法为ref.validate

// 新增用户或修改用户
const handleConfirm = () => {
  userForm.value.validate((value: boolean) => {
    if (value) {
		// 逻辑
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue 3和Element Plus的校验,你可以按照以下步骤进行设置: 1. 首先,确保你已经安装了Vue 3和Element Plus,并在你的项目中引入它们。 2. 创建一个Vue组件,在其中定义你的。 3. 在data属性中添加一个对象,用于存储数据和校验规则。例如: ```javascript data() { return { form: { name: '', email: '' }, rules: { name: [ { required: true, message: '请输入姓名', trigger: 'blur' } ], email: [ { required: true, message: '请输入邮箱地址', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] } ] } } } ``` 在上面的例子中,我们定义了一个对象`form`,其中包含了`name`和`email`字段。同时,我们定义了校验规则`rules`,对`name`和`email`字段进行校验。 4. 在模板中使用`el-form`和`el-form-item`标签来渲染,并绑定校验规则和错误消息。例如: ```html <el-form :model="form" :rules="rules"> <el-form-item label="姓名" prop="name"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="邮箱" prop="email"> <el-input v-model="form.email"></el-input> </el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form> ``` 在上面的例子中,我们使用了`prop`属性来指定校验规则的字段名,使用`v-model`指令将数据绑定到输入框上。 5. 在组件的方法中,定义一个用于提交的方法,并调用`this.$refs.form.validate()`来触发校验。例如: ```javascript methods: { submitForm() { this.$refs.form.validate(valid => { if (valid) { // 校验通过,可以进行提交操作 console.log('校验通过'); } else { // 校验不通过,进行错误提示 console.log('校验不通过'); } }); } } ``` 在上面的例子中,我们使用了`this.$refs.form.validate()`方法来触发校验,并在回调函数中判断校验结果。 这样,你就可以使用Vue 3和Element Plus进行校验了。根据实际需求,你可以添加更多的校验规则和自定义错误消息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值