当前位置: 首页 > news >正文

elementui中el-form自定义表单校验规则

1. 完整代码

在rules中,加validator字段,定义自己的校验规则,为一个函数,必须调用callback(无论校验是否成功,调用callback函数)

<template>
  <div class="addAccount">
          <el-form
            :model="ruleForm"
            :rules="rules"
            ref="ruleForm"
            label-width="auto"
          >
            <el-form-item label="中台UID" prop="uid">
              <el-input
                type="textarea"
                v-model="ruleForm.uid"
                style="width: 600px"
                :rows="3"
                placeholder="请输入中台uid"
              ></el-input>
            </el-form-item>

            <el-form-item>
              <el-button type="primary" size="small" @click="toAddPlenty('ruleForm')"
                >批量创建工单</el-button
              >
            </el-form-item>
          </el-form>
  </div>
</template>
<script>
export default {
  data() {
    return {
      ruleForm: {
        uid: "",
      },
      rules: {
        uid: [
          {
            // 表单校验之后,不显示星号——必须加required:true才可以
            required: true,
            validator: (rule, value, callback) => {
              const ipReg = /^(\d+((,\d+)*)),?$/;
              const error = value.length && value.split(',').some(ip => ip && !ipReg.test(ip))

              if (value === "") {
                callback(new Error('请输入中台uid,多个uid用英文","分隔'));
              } else {
                if (error) {
                  callback('请输入正确的uid,多个uid用英文","分隔')
                }
                callback();
              }
            },
            trigger: "blur",
          },
        ],
      },
    };
  },
  methods: {
    toAddPlenty(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert("输入格式正确!");
        } else {
          console.log("error !!");
          return false;
        }
      });
    },
  },
};
</script>

2. 相关问题解释

  1. 校验规则给el-formrules属性,对应值在data中返回,为一个对象。
  2. rules对象的各个键为el-form-item中的prop对应字段名,例如:
<el-form :model="form" :rules="rules" ref="ruleForm">
	<el-form-item prop="id">
		<el-input v-model="form.id"></el-input>
	</el-form-item>
</el-form>

data(){
	return {
		rules: {
			id: [{
				required: true,
				validator: (rule,value,callback)=>{},
				trigger:"blur"
			}]
		}
	}
}
  1. validate函数在任意一表单项被校验后触发
    例如以上写的当触发blur事件,会触发validate函数,校验表单的prop值,代码如下:
// 这里refs取 el-form , 参数valid为true则校验成功 为false则失败,需重新输入相关表单内容
this.$refs['ruleForm'].validate((valid)=>{})

3. 表单校验生效之后不显示label前的小星号问题

在自定义校验规则中,加上required: true,不加就不会显示label前面的红色星号。

相关文章:

  • Java后端开发(十八)-- 使用JAXB,将JavaBean转换XML文本
  • 基础知识专题整理-----持续更新
  • lib-zo,C语言另一个协程库,整理
  • leetcode0704. 二分查找-easy
  • 关于labview中路径的问题
  • 一款功能强大的手机使用情况监控工具
  • 探访 DINO 家族 Part 4:融合多模态大语言模型的视觉模型基础 RexSeek
  • 【计算机网络】记录一次校园网无法上网的解决方法
  • Android 地区选择器或者其他选择器
  • 【蓝桥杯14天冲刺课题单】Day 1
  • 指针函数、函数指针和指针函数指针的全面总结
  • MySQL表缺乏主键或唯一索引对主从复制的深度影响及解决方案
  • linux课程学习三——静态/动态库的创建
  • 使用无人机进行露天矿运输道路分析
  • js中三元表达式(条件运算符)的用法总结
  • VCP考试通过率低?
  • vs2022中使用spdlog、C++日志
  • 时序数据库 InfluxDB(五)
  • 文件分享系统--开源的可视化文件共享管理工具
  • LeetCode 438. 找到字符串中所有字母的异位词
  • 中山外贸网站开发/百度互联网营销
  • 网站做弹窗/百度排名规则
  • 海城网站制作建设/百度热搜榜排名昨日
  • php微网站开发/学技术包分配的培训机构
  • wordpress 代替/优质的seo快速排名优化
  • 哈尔滨市建设安全监察网站/查询网址域名ip地址