iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >vue如何用element实现区间选择组件
  • 851
分享到

vue如何用element实现区间选择组件

2023-07-04 15:07:06 851人浏览 泡泡鱼
摘要

这篇文章主要介绍“Vue如何用element实现区间选择组件”,在日常操作中,相信很多人在vue如何用element实现区间选择组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何用element实现

这篇文章主要介绍“Vue如何用element实现区间选择组件”,在日常操作中,相信很多人在vue如何用element实现区间选择组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何用element实现区间选择组件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

主要思路

  1. 单个表单校验:必填项校验、正整数校验、区间校验

  2. 关联校验:右侧阈值不得小于左侧阈值

根据上面的思路,单个表单的校验属于公共校验方法,关联校验需要分别校验(因为对比对象不同,且提示语不同),由此在自定义校验中有了如下定义:

rules: {  min: [    { required: true, message: '必填项,请维护', trigger: 'blur' },    { validator: this.validateCom, trigger: 'blur' },    { validator: this.validateMin, trigger: 'blur' },  ],  max: [    { required: true, message: '必填项,请维护', trigger: 'blur' },    { validator: this.validateCom, trigger: 'blur' },    { validator: this.validateMax, trigger: 'blur' },  ],},

公共校验方法:正整数校验、区间校验

validateCom(rule, value, callback) {  const one = Number(value);  if (Number.isInteger(one)) {    if (one < MIN_NUMBER) {      return callback(new Error(`输入值必须大于${MIN_NUMBER}`));    } else if (one > MAX_NUMBER) {      return callback(new Error(`输入值必须小于${MAX_NUMBER}`));    }    return callback();  }  return callback(new Error('输入值必须为正整数'));},

注意:input输出的始终是字符串类型,需要转换成数字后进行比对

关联校验:

validateMin(rule, value, callback) {  const one = Number(value);  const max = Number(this.fORM.max);  if (!max || one < max) {    return callback();  }  return callback(new Error('输入值不得大于最大阈值'));},validateMax(rule, value, callback) {  const one = Number(value);  const min = Number(this.form.min);  if (!min || one > min) {    return callback();  }  return callback(new Error('输入值不得小于最小阈值'));},

填坑(重点)

根据上面的写法,组件的基本功能实现了,但是有一个坑!如下:

vue如何用element实现区间选择组件

很显然,左侧值是小于右侧值的,但是校验提示仍然报错。究其原因,还是关联校验的问题。既然是关联交验,改变其中一个时应该会重新校验两个。很简单,在input改变时,重新校验表单不就OK了吗

handleChange() {  this.$refs.form.validate();}

真实表现正如我们所料,但是当我们打开console的时候,会看到Uncaught (in promise) false,这又是什么鬼,身为优秀的前端工程师,你定不会允许自己的代码里报错,即使不影响正常流程。

经查证:Promise报错,Uncaught的意思是代表有reject状态没有被catch。究其原因,改变一个值时,校验整个表单时,改变的那个input会执行两次校验,导致异常。

最后做如下修改:

handleMinChange() {  this.$refs.form.validateField('max');},handleMaxChange() {  this.$refs.form.validateField('min');},// 并对外暴露操作方法getFormData() {  const ret = {};  this.$refs.form.validate((valid) => {    ret.valid = valid;    ret.form = this.form;  });  return ret;},resetForm() {  this.$refs.form.resetFields();},

总结input表单输出值为String类型,即使设置了type=number关联交验时需要验证其关联项,且不能重复校验

全部代码:

<template> <el-form ref="form" :model="form" :rules="rules">  <el-form-item prop="min">   <el-input v-model="form.min" @change="handleMinChange" />  </el-form-item>  ~  <el-form-item prop="max">   <el-input v-model="form.max" @change="handleMaxChange" />  </el-form-item> </el-form></template> <script>const MIN_NUMBER = 1;const MAX_NUMBER = 100000; export default { data() {  return {   form: { min: '20', max: '100000' },   rules: {    min: [     { required: true, message: '必填项,请维护', trigger: 'blur' },     { validator: this.validateCom, trigger: 'blur' },     { validator: this.validateMin, trigger: 'blur' },    ],    max: [     { required: true, message: '必填项,请维护', trigger: 'blur' },     { validator: this.validateCom, trigger: 'blur' },     { validator: this.validateMax, trigger: 'blur' },    ],   },  }; }, methods: {  getFormData() {   const ret = {};   this.$refs.form.validate((valid) => {    ret.valid = valid;    ret.form = this.form;   });   return ret;  },  resetForm() {   this.$refs.form.resetFields();  },  handleMinChange() {   this.$refs.form.validateField('max');  },  handleMaxChange() {   this.$refs.form.validateField('min');  },  validateCom(rule, value, callback) {   const one = Number(value);   if (Number.isInteger(one)) {    if (one < MIN_NUMBER) {     return callback(new Error('输入值必须大于0'));    } else if (one > MAX_NUMBER) {     return callback(new Error('输入值必须小于100000'));    }    return callback();   }   return callback(new Error('输入值必须为正整数'));  },  validateMin(rule, value, callback) {   const one = Number(value);   const max = Number(this.form.max);   if (!max || one < max) {    return callback();   }   return callback(new Error('输入值不得大于最大阈值'));  },  validateMax(rule, value, callback) {   const one = Number(value);   const min = Number(this.form.min);   if (!min || one > min) {    return callback();   }   return callback(new Error('输入值不得小于最小阈值'));  }, },};</script>

vue是什么

Vue是一套用于构建用户界面的渐进式javascript框架,Vue与其它大型框架的区别是,使用Vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用Vue可以采用单文件组件和Vue生态系统支持的库开发复杂的单页应用。

到此,关于“vue如何用element实现区间选择组件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: vue如何用element实现区间选择组件

本文链接: https://www.lsjlt.com/news/346067.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue如何用element实现区间选择组件
    这篇文章主要介绍“vue如何用element实现区间选择组件”,在日常操作中,相信很多人在vue如何用element实现区间选择组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何用element实现...
    99+
    2023-07-04
  • VUE-ElementUI时间区间选择器如何使用
    这篇文章主要介绍“VUE-ElementUI时间区间选择器如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“VUE-ElementUI时间区间选择器如何使用”文章能帮助大家解决问题。VUE-El...
    99+
    2023-06-30
  • 如何实现基于Vue+ElementUI的省市区地址选择通用组件
    小编给大家分享一下如何实现基于Vue+ElementUI的省市区地址选择通用组件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一...
    99+
    2024-04-02
  • Vue+Element switch组件如何使用
    这篇“Vue+Element switch组件如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue+Ele...
    99+
    2023-07-02
  • Vue中Element分组+多选+可搜索Select选择器怎么实现
    这篇文章主要为大家展示了“Vue中Element分组+多选+可搜索Select选择器怎么实现”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中El...
    99+
    2024-04-02
  • VUE中element-ui如何实现一个复用Table组件
    小编给大家分享一下VUE中element-ui如何实现一个复用Table组件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!步骤一先来个基本的表格展示官例的tableDatatableDat...
    99+
    2024-04-02
  • Vue如何实现组件间通信
    目录1. 父子间通信1.1 父组件 --> 儿子组件1.2 儿子组件 --> 父组件2. 爷孙间通信3. 任意组件间通信3.1 EventBus3.2 Vuex1. 父子...
    99+
    2024-04-02
  • vue如何实现选项卡组件
    这篇文章主要为大家展示了“vue如何实现选项卡组件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何实现选项卡组件”这篇文章吧。具体内容如下主要功能:点击不同的选项,显示不同的内容html...
    99+
    2023-06-29
  • vue组件间通信如何实现
    本篇内容主要讲解“vue组件间通信如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue组件间通信如何实现”吧!父组件传子组件父传子方法(一) 属性传递 props//子组件&l...
    99+
    2023-07-04
  • vue+element DatePicker实现日期选择器封装
    目录前言效果一、封装组件创建linechartlinechart:二、页面中使用workBench:总结前言 今天封装了一个DatePicker日期选择器,发现带快捷选择的不太好封装...
    99+
    2023-02-09
    vue element DatePicker日期选择器 vue日期时间选择组件 element日期选择器datepicker
  • 如何基于Element组件改造树形选择器
    这篇文章将为大家详细讲解有关如何基于Element组件改造树形选择器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言:由于做项目需要一个树形选择器,项目用的也是elem...
    99+
    2024-04-02
  • element日期组件实现只能选择小时或分钟
    前言 在使用 element 框架时,总是会有一些满足不了现有项目需求的问题,这个时候就需要我们对 element 的组件进行改造,最近有一个需求就是要求日期组件只能选择年月日时,不...
    99+
    2023-01-31
    element日期选择小时或分钟 element日期选择
  • VUE-ElementUI 时间区间选择器的使用
    目录VUE-ElementUI 时间区间选择器一、单个输入框二、两个输入框elementUI-日期选择器(两个框 限制选择范围、快捷键选择) 两个日期框选择VUE-Elem...
    99+
    2024-04-02
  • Vue组件如何实现高德地图地址选择功能
    这篇文章给大家分享的是有关Vue组件如何实现高德地图地址选择功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、效果图二、组件要实现的功能1. 如果有传入坐标点,则定位到坐标点...
    99+
    2024-04-02
  • 如何用vue实现组件间参数传递
    这篇文章主要介绍“如何用vue实现组件间参数传递”,在日常操作中,相信很多人在如何用vue实现组件间参数传递问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用vue实现组件间参数传递”的疑惑有所帮助!接下来...
    99+
    2023-07-04
  • vue中怎么实现省市区三联动下拉选择组件
    这篇文章给大家分享的是有关vue中怎么实现省市区三联动下拉选择组件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先来看一下最终的效果(没有写太多的样式...)组件所需要的省市区...
    99+
    2024-04-02
  • vue怎么实现日期选择组件功能
    这篇文章主要讲解了“vue怎么实现日期选择组件功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么实现日期选择组件功能”吧!目录结构demo 用vue-cli 的webpack-si...
    99+
    2023-07-04
  • 如何实现Vue组件化的日期联动选择器功能
    这篇文章主要介绍了如何实现Vue组件化的日期联动选择器功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。将时间戳转换成日期格式// ...
    99+
    2024-04-02
  • Vue和React组件间如何实现传值
    这篇文章主要讲解了“Vue和React组件间如何实现传值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue和React组件间如何实现传值”吧!组件间的传值方式组件的传值场景无外乎以下几种:...
    99+
    2023-07-04
  • Vue如何实现组件间通信方式
    这篇文章主要介绍了Vue如何实现组件间通信方式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。props父组件可以通过props向下传递数据给子组件静态的Props通过为子组件...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作