详解element-ui 表单校验 Rules 配置 常用黑科技

yizhihongxing

详解element-ui 表单校验 Rules 配置 常用黑科技

在Element-UI表单组件中,我们可以很方便地使用校验规则来验证用户输入的数据,以保证数据的合法性。下面我们将详细讲解如何在Element-UI表单组件中使用校验规则。

绑定校验规则

我们可以通过设置rules属性来绑定校验规则。例如下面的代码,绑定了一个名为name的校验规则:

<el-form ref="form" :model="form">
  <el-form-item label="用户名" prop="name">
    <el-input v-model="form.name"></el-input>
  </el-form-item>
</el-form>
data() {
  return {
    form: {
      name: ''
    },
    rules: {
      name: [
        { required: true, message: '请输入用户名', trigger: 'blur' },
        { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
      ]
    }
  }
}

rules中,我们定义了一个名为name的校验规则,包含了两条校验规则。required表示输入不能为空,minmax表示输入长度在指定范围内。message表示错误提示信息,trigger表示触发校验的事件。

表单的校验方法

要对表单进行校验,我们需要使用validate方法。例如下面的代码,在点击提交按钮时,调用了validate方法对表单进行校验:

<el-form ref="form" :model="form">
  <!-- ... -->
  <el-form-item>
    <el-button type="primary" @click="submitForm">提交</el-button>
  </el-form-item>
</el-form>
methods: {
  submitForm() {
    this.$refs.form.validate((valid) => {
      if (valid) {
        // 校验成功后的操作
      } else {
        // 校验失败后的操作
      }
    });
  }
}

validate方法中,我们传入了一个回调函数,并在该函数中根据校验结果做出相应的操作。

示例1:自定义校验规则

在前面的示例中,我们使用了Element-UI提供的校验规则。但是有些时候,我们可能需要自定义一些校验规则。例如下面的代码,自定义了一个名为gender的校验规则:

<el-form ref="form" :model="form">
  <el-form-item label="称呼" prop="title">
    <el-input v-model="form.title"></el-input>
  </el-form-item>
  <el-form-item label="性别" prop="gender">
    <el-radio-group v-model="form.gender">
      <el-radio :label="1">男</el-radio>
      <el-radio :label="2">女</el-radio>
    </el-radio-group>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm">提交</el-button>
  </el-form-item>
</el-form>
data() {
  return {
    form: {
      title: '',
      gender: '',
    },
    rules: {
      title: [
        { required: true, message: '请输入称呼', trigger: 'blur' }
      ],
      gender: [
        { validator: this.checkGender, trigger: 'change' }
      ]
    }
  }
},
methods: {
  checkGender(rule, value, callback) {
    if (value === 1 || value === 2) {
      callback();
    } else {
      callback(new Error('请选择性别'));
    }
  }
}

rules中,我们定义了一个名为gender的校验规则。与前面示例不同的是,这里的规则的validator属性设置为一个函数checkGender,表示使用自定义的校验函数。当checkGender函数返回一个错误时,表示校验失败。

示例2:根据其他字段动态设置校验规则

有时候我们需要根据用户的输入动态地设置校验规则。例如下面的代码,根据用户选择的爱好数量,动态地设置校验规则:

<el-form ref="form" :model="form">
  <el-form-item label="爱好">
    <el-checkbox-group v-model="form.hobbies">
      <el-checkbox :label="1">篮球</el-checkbox>
      <el-checkbox :label="2">足球</el-checkbox>
      <el-checkbox :label="3">羽毛球</el-checkbox>
    </el-checkbox-group>
  </el-form-item>
  <el-form-item label="自我介绍">
    <el-input v-model="form.introduction"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm">提交</el-button>
  </el-form-item>
</el-form>
data() {
  return {
    form: {
      hobbies: [],
      introduction: '',
    },
    rules: {
      introduction: [
        { required: true, message: '请输入自我介绍', trigger: 'blur' }
      ]
    }
  }
},
watch: {
  'form.hobbies'(newVal) {
    const len = newVal.length;
    const maxLen = 3;
    const rules = [
      { required: true, message: '请选择爱好', trigger: 'change' }
    ];
    if (len > 0) {
      rules.push({ 
        validator: (rule, value, callback) => {
          const valLen = value.length;
          if (valLen <= 100) {
            callback();
          } else {
            callback(new Error('自我介绍不能超过100个字符'));
          }
        },
        trigger: 'blur'
      });
    }
    if (len >= maxLen) {
      rules.push({ message: '最多只能选择' + maxLen + '个爱好', trigger: 'change' });
    }
    this.$set(this.rules, 'introduction', rules);
  }
}

rules中,我们定义了一个名为introduction的校验规则,初始值为一个必填校验规则。我们使用了watch函数来实时监听用户选择的爱好,根据选择的爱好数量来动态地设置校验规则。例如当选择了至少一个爱好时,将添加一个校验自我介绍长度不能超过100个字符的校验规则,当选择的爱好数量达到3个时,将添加一个提示用户最多只能选择3个爱好的校验规则。使用$set方法来更新rules属性的值,以确保动态添加的校验规则能够生效。

以上就是关于Element-UI表单校验规则的详解,希望对大家有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解element-ui 表单校验 Rules 配置 常用黑科技 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 原生js实现淘宝购物车功能

    原生js实现淘宝购物车功能的攻略可以分为以下几个步骤: 步骤一:页面结构 首先,我们需要在页面中设置一个存放购物车商品的容器,并给它一个id,方便我们后续在JavaScript中获取到它的元素: <div id="cart-container"> </div> 步骤二:获取数据 接下来,我们需要从后台获取购物车中的…

    JavaScript 2023年6月11日
    00
  • js实现String.Fomat的实例代码

    实现一个类似于String.Format的函数,需要掌握 JavaScript 中字符串的相关知识和操作方法,主要包括字符串的拼接和格式化,正则表达式等。 下面是实现String.Format的详细攻略: 1. 在原型链上添加Format方法 JavaScript 中所有对象都有一个__proto__属性,指向该对象的原型。为了实现类似于C#中的String…

    JavaScript 2023年5月28日
    00
  • 原生JS实现前端本地文件上传

    当我们需要在前端实现文件上传的功能时,可以使用原生的JavaScript代码来实现。下面是一个完整的攻略,包含了前端上传文件需要用到的一些知识点。 1. 获取文件上传的节点 要上传文件,需要在页面上放置一个文件上传的节点,通常使用HTML中的<input type=”file” />元素。获取节点的方式可以使用原生JavaScript中的 get…

    JavaScript 2023年5月27日
    00
  • delete 语法的本质深入解析

    针对删除数据表中某些数据行的 delete 语法深入解析,我们可以分以下几个方面来讲解。 1. delete 语法的语法结构 delete 语法是 MySQL 中删除数据表中某些数据行的语法,其基本语法结构如下所示: DELETE FROM 表名 WHERE 条件; DELETE FROM 表名 表示删除表中某些数据行 WHERE 后紧跟着的就是删除操作的条…

    JavaScript 2023年6月10日
    00
  • 深入剖析JavaScript面向对象编程

    深入剖析JavaScript面向对象编程 1. 面向对象编程的基本概念 1.1 什么是面向对象编程 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式或编程风格,通过对象的方式将数据和行为组织在一起,以此来描述和处理现实世界中的事物。 1.2 面向对象编程的主要特征 封装 继承 多态 1.3 面向对象编程的优点 …

    JavaScript 2023年5月27日
    00
  • JS中call apply bind函数手写实现demo

    下面是关于“JS中call apply bind函数手写实现demo”的攻略: 理解call、apply、bind函数 在手写这三个函数的过程中,我们必须先清楚地理解这三个函数的作用: call函数:调用一个函数,将一个对象作为第一个参数,以及多个参数传入该函数。 apply函数:调用一个函数,将一个对象作为第一个参数,以及一个参数数组传入该函数。 bind…

    JavaScript 2023年6月10日
    00
  • JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)

    我将详细讲解“JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)”,并给出两个示例说明。 JavaScript实现跑马灯抽奖活动实例代码解析与优化(二) 前言 上一篇文章已经介绍了JavaScript实现跑马灯抽奖活动的基本思路和代码,在这篇文章中,我们将分析、优化并完善之前的代码。接下来我们将介绍具体的步骤。 代码优化 1. 变量申明 原来的代…

    JavaScript 2023年6月10日
    00
  • JavaScript 定时器关键点及使用场景解析

    JavaScript 定时器关键点及使用场景解析 什么是 JavaScript 定时器? JavaScript 定时器是一种用于在指定时间间隔后执行一段 JavaScript 代码的机制。在开发中,我们通常需要在特定的时间间隔内执行某些操作,这时就可以使用 JavaScript 定时器。 JavaScript 提供了两种定时器: setInterval se…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部