关于ElementPlus中的表单验证规则详解

 更新时间:2023年06月07日 17:18:29   作者:秋天code  
这篇文章主要介绍了关于ElementPlus中的表单验证,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

关于ElementPlus中表单的校验规则,官网文档已经给出了,但是没有说明性文字,所以我想来记录一下,给出一些文字说明

ElementPlus中的简单校验

ElementPlus的表单的一般结构是:

<el-form>
	<el-form-item>
		<el-input/>
	</el-form-item>
</el-form>

ElementPlus中使用表单校验规则:

  • <script>中给出校验规则对象,主要属性名要与form对象的属性名一致
  • 一个字段的校验规则可以有多个,值是一个数组,数组中的一个对象就是一条校验规则
// 收集表单数据
const form = reactive({
  account: '',
  password: '',
  agree: false
})
// 定义校验规则
// 可以为一个字段指定多条校验规则
// 规则名称与form表单字段一致
const rules = reactive({
  account: [
    // required是否必填,message不符合此规则时的提示信息,
    // trigger触发此条规则校验的时机,有两个值, blur 或 change,默认就是blur和change都会进行校验
    // min此字段的最小长度,max此字段的最大长度
    // pattern 正则表达式
    { required: true, message: '账户不能为空', trigger: 'blur' },
    { min: 6, max: 14, message: '用户名长度为6 - 14位' }
  ]
})

在模版中:

  • <el-form>rules属性绑定规则校验对象
  • <el-form-item>prop属性绑定规则对象的某个字段
<!--
  :model 绑定表单对象
  :rules 绑定表单的校验规则
-->
<el-form
  status-icon
  :model="form"
  :rules="rules"
>
  <!--
	label标签名
	prop属性,指定校验规则中的
  -->
  <el-form-item label="账户" prop="account">
	<!-- v-model将值收集到哪个变量中 -->
	<el-input v-model="form.account" />
  </el-form-item>
  <el-form-item label="密码">
	<el-input v-model="form.password" />
  </el-form-item>
  <el-button size="large" class="subBtn">点击登录</el-button>
</el-form>

演示效果

自定义校验规则

<script>中的规则中,数组中的每一个对象都是一个校验规则,我们只需要给一个对象给出validator()方法的实现即可:
该方法有三个参数:

validator(rule, value, callback){
	// rule此条规则的描述信息
	// value表单中此字段的值
	// 回调函数,通过此函数控制是否校验通过
}

看个例子

// 定义校验规则
const rules = reactive({
// 普通的校验规则
  account: [
    { required: true, message: '账户不能为空', trigger: 'blur' },
    { min: 6, max: 14, message: '用户名长度为6 - 14位' }
  ],
  password: [
  // 自定义校验规则
    {
      validator(rule, value, callback) {
        if (value[0] === '0') {
	      // 校验不通过
          return callback(new Error('密码字段的第一位不能是0'))
        } else {
          // 校验通过
          callback()
        }
      }
    }
  ]
})

在模版中使用为字段使用此条校验规则

<el-form
  :model="form"
  :rules="rules"
>
  <!--
	label标签名
	prop属性,指定校验规则中的
  -->
  <el-form-item label="账户" prop="account">
	<!-- v-model将值收集到哪个变量中 -->
	<el-input v-model="form.account" />
  </el-form-item>
  <el-form-item label="密码" prop="password">
	<el-input v-model="form.password" />
  </el-form-item>
  <el-button size="large" class="subBtn">点击登录</el-button>
</el-form>

演示效果

表单统一校验

如果用户什么都不输入,直接点击登录,那么每个字段的校验规则是不生效的,因为此字段还没有输入。
为了避免用户在不操作表单的情况下,直接提交表单,可以在用户点击提交按钮后,对所有的字段重新激活一次校验。
通过表单对象的一个方法validate()方法,对整个表单的所有内容进行一次验证。

form.validate(callback)

此方法接收一个回调函数,回调函数的第一个参数,是布尔类型,当所有的校验规则都通过时,此值是true,否则false
回调函数的第二个参数是校验未通过的所有字段的数组
在form表单中通过ref属性标识一下

<el-form ref="formRef">
</el-form>

<script>部分

// 获取form表单引用
const formRef = ref(null)
// 当点击登录按钮时的函数
const submit = () => {
  // 获取到真正的表单元素
  formRef.value.validate((isValid, invalidFields) => {
    if (isValid) {
      // 表单所有元素验证通过,可以提交了
      console.log('验证通过')
    } else {
      console.log(invalidFields)
      console.log('验证不通过,不能提交,请检查')
    }
  })
}

到此这篇关于关于ElementPlus中的表单验证的文章就介绍到这了,更多相关ElementPlus表单验证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue浏览器返回监听的具体步骤

    vue浏览器返回监听的具体步骤

    这篇文章主要给大家介绍了关于vue浏览器返回监听的具体步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • vue 使用高德地图vue-amap组件过程解析

    vue 使用高德地图vue-amap组件过程解析

    这篇文章主要介绍了vue 使用高德地图vue-amap组件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题

    Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题

    这篇文章主要介绍了Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • Vue echarts画甘特图流程详细讲解

    Vue echarts画甘特图流程详细讲解

    这篇文章主要介绍了Vue echarts画甘特图流程,甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。其通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况
    2022-09-09
  • 开发Vue树形组件的示例代码

    开发Vue树形组件的示例代码

    本篇文章主要介绍了开发Vue树形组件的示例代码,它展现了组件的递归使用。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • el-menu如何根据多层树形结构递归遍历展示菜单栏

    el-menu如何根据多层树形结构递归遍历展示菜单栏

    这篇文章主要介绍了el-menu根据多层树形结构递归遍历展示菜单栏,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-07-07
  • vue通过krpano.js实现360全景图的实例代码

    vue通过krpano.js实现360全景图的实例代码

    这篇文章主要介绍了vue上通过krpano.js实现360全景图,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-10-10
  • vue和js中实现模糊查询方式

    vue和js中实现模糊查询方式

    这篇文章主要介绍了vue和js中实现模糊查询方式,具有很好的参考价值,希望对大家有所帮助。也希望大家多多支持脚本之家
    2022-08-08
  • Vue-cli 使用json server在本地模拟请求数据的示例代码

    Vue-cli 使用json server在本地模拟请求数据的示例代码

    本篇文章主要介绍了Vue-cli 使用json server在本地模拟请求数据的示例代码,非常具有实用价值,需要的朋友可以参考下
    2017-11-11
  • vue和iview实现Scroll 数据无限滚动功能

    vue和iview实现Scroll 数据无限滚动功能

    今天小编就为大家分享一篇vue和iview实现Scroll 数据无限滚动功能,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10

最新评论