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

详解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实现拖拽 闭包函数详细介绍

    JavaScript实现拖拽 闭包函数详细介绍 在网页开发中,经常会遇到需要通过鼠标拖拽来实现一些操作的需求,如拖拽图片、调整界面尺寸等。下面我们以一个实现拖拽的例子来介绍如何使用JavaScript实现拖拽功能,并介绍闭包函数的概念和应用。 实现拖拽的思路 当鼠标按下时,记录下鼠标的位置和拖拽元素的位置。 当鼠标移动时,根据鼠标移动的距离来更新拖拽元素的位…

    JavaScript 2023年6月10日
    00
  • 用python制作个音乐下载器

    制作一个音乐下载器需要完成以下几个步骤: 步骤一:确定下载的音乐网站 首先要确定下载的音乐网站,一般常见的网站包括QQ音乐、酷狗音乐、网易云音乐等。不同的网站采取的下载方式可能有所不同,因此需要先确定目标网站的下载方式。 步骤二:分析目标网站的下载方式 对于不同的网站,其下载方式可能存在差异,因此需要使用网络爬虫对网站进行分析,找到下载音乐的方式。常见的方案…

    JavaScript 2023年5月28日
    00
  • 论JavaScript模块化编程

    论JavaScript模块化编程 JavaScript的模块化编程是指将一个大型的应用程序划分为小的、互相依赖的模块,每个模块具有特定的功能,实现模块的高内聚、低耦合的特性,方便代码的维护和复用。本文将介绍如何使用JavaScript进行模块化编程,并分别通过常规模块化和ES6模块化两个实例进行说明。 常规模块化 常规模块化是JavaScript模块化的老方…

    JavaScript 2023年5月27日
    00
  • 浅析JavaScript中的特殊数据类型

    浅析JavaScript中的特殊数据类型 在JavaScript中,除了常规的数据类型,还有几种特殊的数据类型,其操作和使用方法与常规类型有所不同。本文将会详细介绍JavaScript中的特殊数据类型,包括 null,undefined,NaN和Symbol。 null null是一种表示空值或者无值的特殊类型,如果一个变量的值为null,则表示该变量未被赋…

    JavaScript 2023年5月28日
    00
  • 详解android与HTML混合开发总结

    详解 Android 与 HTML 混合开发总结 介绍 本文主要介绍 Android 和 HTML 混合开发的方法和技巧。Android 和 HTML 的混合开发可以将 Web 和 Native 的优势融合在一起,实现复杂的交互操作,同时保证了应用的性能和稳定性。下面详细介绍如何实现 Android 和 HTML 的混合开发。 WebView 构建基础 We…

    JavaScript 2023年6月11日
    00
  • js以对象为索引的关联数组

    “以对象为索引的关联数组”在JavaScript中被称为“对象”,也是一种常见的数据结构。从表面上看,它与其他编程语言中的字典或散列表/哈希表类似,但实际上更加灵活和强大。 基本概念 JavaScript中的对象是一组键/值对,其中键是字符串(或符号)类型,而值可以是任何数据类型(包括另一个对象)。对象中的键是唯一的,且不允许重复,但同一个对象的多个键可以指…

    JavaScript 2023年6月10日
    00
  • 寒冬求职之你必须要懂的Web安全

    寒冬求职之你必须要懂的Web安全 在进行Web开发工作时,我们必须要重视Web安全问题,因为没有安全保障的系统极易受到黑客攻击,泄露用户信息和系统的机密数据。在寒冬求职过程中,Web安全知识的掌握也是很重要的,今天我将为大家分享一下Web安全的攻略。 了解常见的攻击方式 SQL注入攻击 SQL注入攻击是指攻击者在Web应用程序使用的SQL语句中注入恶意的SQ…

    JavaScript 2023年6月11日
    00
  • 微信小程序表单验证WxValidate的使用

    下面是“微信小程序表单验证WxValidate的使用”的完整攻略: 1. 引入WxValidate库 首先,我们需要在小程序中引入WxValidate库,可以通过以下命令进行安装: npm install –save joi-wxvalidate 然后,在小程序的页面或组件中引入WxValidate库: import WxValidate from ‘jo…

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