详解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日

相关文章

  • 详解Angular操作cookies方法

    以下是详解Angular操作cookies方法的完整攻略: 1. 什么是cookies Cookies 是指在浏览器中存储小型文本数据的一种机制,它们通常用于跟踪用户、记住用户的偏好设置等功能。 2. 在Angular中使用cookies 通常在Angular中使用第三方库来操作cookies。这里介绍两个常用的库: ngx-cookie-service n…

    JavaScript 2023年6月11日
    00
  • JavaScript 判断日期格式是否正确的实现代码

    判断日期格式是否正确的实现代码需要考虑不同的日期格式,包括年月日、小时分钟秒、毫秒等不同的时间单位组合,不同的时间分隔符等因素。下面就是一份基于JavaScript的日期格式验证实例代码。 步骤1:定义正则表达式 为了实现日期格式验证,我们需要使用正则表达式来判断是否满足指定日期格式。以下是一个匹配日期格式的正则表达式。 const dateRegEx = …

    JavaScript 2023年5月27日
    00
  • 基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果

    实现倒计时的方式有很多种,下面我将详细讲解一种基于JavaScript代码实现简单易用的倒计时效果的攻略。 步骤一:HTML结构 首先,我们需要在HTML中构建出需要展示倒计时的元素,我们可以使用两个div元素,其中一个用来显示时分秒,另一个用来显示天数。 以下是示例代码: <div id="countdown"> <d…

    JavaScript 2023年5月27日
    00
  • 使用JavaScript获取电池状态的方法

    获取电池状态是Web开发中比较常见的需求之一,可以通过JavaScript获取电池状态,从而更好地帮助用户管理电池电量。 示例一:使用Battery API获取电池状态 在现代浏览器中,我们可以通过使用Battery API获取电池状态。首先,需要检测浏览器是否支持Battery API: if (‘getBattery’ in navigator) { /…

    JavaScript 2023年6月11日
    00
  • iOS瀑布流的简单实现(Swift)

    这里是“iOS瀑布流的简单实现(Swift)”的完整攻略。 一、前言 瀑布流是一种非常常见的UI布局方式,在iOS开发中也有很多应用。本文将介绍如何在Swift中实现一个简单的瀑布流布局。 二、实现思路 我们可以采用UICollectionView实现这个瀑布流布局,具体思路如下: 继承UICollectionViewFlowLayout,重写prepare…

    JavaScript 2023年6月11日
    00
  • JavaScript使用小插件实现倒计时的方法讲解

    JavaScript使用小插件实现倒计时的方法讲解 倒计时是网页中常见的功能之一,例如秒杀活动倒计时、网站上线倒计时等。在JavaScript中,我们可以通过编写小插件来实现倒计时功能。 前置知识 在编写代码之前,需要掌握以下基础知识: HTML/CSS基础 JavaScript基础 DOM操作 实现步骤 第一步:制作计时器UI 我们需要先制作一个计时器UI…

    JavaScript 2023年6月10日
    00
  • JS实现获取当前所在周的周六、周日示例分析

    要实现获取当前所在周的周六、周日,可以采用以下步骤: 步骤一:获取当前日期 首先,我们需要获取当前的日期对象,可以使用 JavaScript 中的 Date() 函数,如下所示: let today = new Date(); 步骤二:获取本周的第一天 接下来,我们需要获取本周的第一天,也就是周一的日期。我们可以通过以下代码实现: let firstDay …

    JavaScript 2023年6月10日
    00
  • javascript json对象小技巧之键名作为变量用法分析

    本文将详细讲解”javascript json对象小技巧之键名作为变量用法”,该技巧可以提高代码的灵活性和可读性。 什么是json对象? JSON是一种轻量级的数据交换格式,JS中的JSON对象是Javascript原生支持的一种格式化的数据类型,它可以用来传递和存储简单的结构化数据。 JSON 常用于与服务端交换数据。 通常我们获取的json对象会有多个键…

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