首页 > 其他分享 >基于element-plus实现表单校验

基于element-plus实现表单校验

时间:2023-12-05 11:00:57浏览次数:38  
标签:校验 表单 trigger plus blur message element 输入

官网

https://element-plus.org/zh-CN/component/form.html#自定义校验规则

需求

在日常开发中,我们需要对表单的内容进行校验,确保用户输入的符合我们正常的业务,并赋予正确的提示,以登录注册举例:
功能需求说明:

  • 注册功能(校验+注册)

当用户输入用户名移开文本框后,也就是失去焦点时,需要去校验用户输入的内容是否符合,如果错误并给予提示。
image

代码如下:

<script setup>
import { User, Lock } from '@element-plus/icons-vue'
import { ref } from 'vue'
const isRegister = ref(true)
// 注册
// 整个的用于提交的form数据对象
const formModel = ref({
  username: '',
  password: '',
  repassword: ''
})
// 自定义校验规则
const checkPassword = (rule, value, callback) => {
  // value 是当前字段的值,this 是表单对象
  if (value !== formModel.value.password) {
    return callback(new Error('两次输入的密码不一致'))
  } else {
    callback()
  }
}
// 整个表单的校验规则
const rules = {
  //1.非空校验 trigger 什么时候触发,blur 表示失去焦点时,required为空校验,message为提示信息
  //2.长度校验 min 最小长度 max 最大长度 message 提示信息
  //3.正则校验 pattern:正则规则  \S 非空字符
  username: [
    { required: true, message: '请输入用户名', trigger: 'blur' },
    { min: 5, max: 10, message: '用户名必须是5-10位的字符', trigger: 'blur' },
    {
      pattern: '/^[a-zA-Z][a-zA-Z0-9_]{0,}$/',
      message: '用户名只能包含字母、数字和下划线',
      trigger: 'blur'
    }
  ],
  password: [
    { required: true, message: '请输入密码', trigger: 'blur' },
    {
      pattern: '/^\\S{6,15}$/',
      message: '密码长度6-15位,且不能有空字符',
      trigger: 'blur'
    }
  ],
  repassword: [
    { required: true, message: '请输入密码', trigger: 'blur' },
    { validator: checkPassword, trigger: 'blur' } // 自定义验证规则
  ]
}
</script>

<template>
 <el-form
        :model="formModel" // 表单绑定的数据
        :rules="rules"    // 校验规则
        ref="form"
        size="large"
        autocomplete="off"
        v-if="isRegister"
      >
        <el-form-item>
          <h1>注册</h1>
        </el-form-item>
        <el-form-item prop="username">    // prop中的值与rules值要一致
          <el-input
            v-model="formModel.username" // 双向绑定
            :prefix-icon="User"
            placeholder="请输入用户名"
          ></el-input>
        </el-form-item>
</template>

标签:校验,表单,trigger,plus,blur,message,element,输入
From: https://www.cnblogs.com/zgf123/p/17876743.html

相关文章

  • 新建vue项目,并引入element ui和axios的步骤
    一、新建vue项目(1)win+R进入命令行 使用cmd (2)切换到需要创建vue项目的盘符下  直接D:就能切换到D盘 (3)使用vueui指令进入图形化创建vue项目的界面(注意在创建项目的时候,命令行不能关闭)  之后就在浏览器的界面中进行创建  点击下方的“在此创建新项目”(4)......
  • ADAudit Plus:强大的网络安全卫士
    随着数字化时代的不断发展,企业面临着越来越复杂和多样化的网络安全威胁。在这个信息爆炸的时代,保护组织的敏感信息和确保网络安全已经成为企业发展不可或缺的一环。为了更好地管理和监控网络安全,ADAuditPlus应运而生,成为网络安全领域的卫士之一。ADAuditPlusADAuditPlus是一款功......
  • SpringBoot+MybatisPlus 存json读json
    基础环境springboot2.5.3mysql8.0.22fastjson22.0.38主要配置1.返回VO字段添加注解@ApiModelProperty("字段内容")@TableField(typeHandler=JacksonTypeHandler.class)privateList<JSONObject>columnContent;2.返回Mapper中的resultMap中字段添加......
  • 整合springboot+mybatisplus+mysql+swagger,开发后端接口
    一、版本1.springboot:2.7.82.mybatisplus:3.5.3.13.mysql:8.04.swagger:3.0二、建立数据表(省略表结构)三、新建maven工程及springboot项目1.完成后的项目目录:2.maven工程的pom文件引入依赖:点击查看代码<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http......
  • Ant Design Vue2表单验证失效、select下拉框验证失效
    简述AntDesignVue2表单验证失效、表单校验三个下拉框,级联联动,动态赋值,第一项changge之后2,3需要=null或者='',但是发现明明第二个select已经选择了而且this.form.b不是空为啥还是校验不通过前情提示系统:一说部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注......
  • Ant Design Vue2表单验证失效、select下拉框验证失效
    简述AntDesignVue2表单验证失效、表单校验三个下拉框,级联联动,动态赋值,第一项changge之后2,3需要=null或者='',但是发现明明第二个select已经选择了而且this.form.b不是空为啥还是校验不通过前情提示系统:一说部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注......
  • SAP Fiori Elements 针对 OData V2 和 V4 的 Extension API
    sap.suite.ui.generic.template.ListReport.extensionAPI.ExtensionAPI属于SAPFioriElements的早期版本,它基于SAPUI5框架构建,主要是针对ABAP环境下的ODataV2服务。sap.fe.templates.ListReport.ExtensionAPI是新的FiorielementsforODatav4的一部分,它是基于SA......
  • 关于 SAP Fiori Elements List Report Go 按钮的实现
    代码位置:这段代码是JavaScript中的一个方法_regularTriggerSearch,它是SmartFilterBar对象的原型方法。这个方法的主要目的是在一定延迟后触发搜索操作。这段代码中涵盖了JavaScript中的一些主要特性和概念,包括对象、原型、方法、控制流(if-else)、异步编程(setTimeout和Pr......
  • [Vue] 案例:收集表单数据
    创建一个表单,利用vue完成所有逻辑准备一个容器<divid="root"> <!---@submit指定提交行为,prevent阻止默认的刷新页面行为---> <[email protected]="submitForm"> username:<inputtype="text"v-model="userInfo.username"><b......
  • vue实现请再次输入密码的表单校验
    1、获取第一次输入的密码的值2、比较两次密码的值是否相等3、如果不一致返回错误信息this.userInfo.password2:获取第一次输入的密码;value当前校验值;validator自定义校验规则;constConfirmPassword=(rule,value,callback)=>{if(value!==this.userInfo.password2){......