vue自定义指令限制输入框输入值的步骤与完整代码

 更新时间:2020年08月30日 16:51:10   作者:小豪看世界  
这篇文章主要给大家介绍了关于vue自定义指令限制输入框输入值的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

需求

前端开发过程中,经常遇到表单校验的需求,比如校验用户输入框的内容,限制用户只能输入数字。

本文内容基于 element-ui,el-form 组件可以绑定 model、rule 用于表单内容校验,但如果有多个表单多个输入框那就得写很多个 rule,虽然方法可以通用可是使用起来也是比较繁琐的,可通过自定义执行实现一次注册,多次使用。

Vue 自定义指令

我们使用 el-input 作为表单的输入框

1. 先注册一个自定义指令

import Vue from 'vue';

Vue.directive('LimitInputNumber', {
 bind(el) {
 # do something
 },
});

2.使用自定义指令

直接在组件内绑定 v-limit-input-number 指令

<el-input v-limit-input-number />

3.指令内部校验

onkeypress 事件

onkeypress 事件会在键盘按键被按下并释放一个键时发生

可在事件触发时检测若输入的值不为数字,直接返回 fales

Vue.directive('LimitInputNumber', {
 bind(el) {
 el.onkeypress = (event) => {
  return (/[\d]/.test(String.fromCharCode(event.keyCode || event.which))) || event.which === 8;
 };
 },
});

但该事件存在一个问题,就是在中文输入法的时候无法触发事件,导致用户可以输入中文

oninput 事件

oninput 事件在用户输入时触发

可在事件触发时进行过滤,过滤掉那些不为数字的值,并重新绑定到输入框上,解决了中文输入法下的问题

Vue.directive('LimitInputNumber', {
 bind(el) {
  el.oninput = () => {
   el.children[0].value = el.children[0].value.replace(/\D/ig, '');
  };
 },
});

完整代码

import Vue from 'vue';

Vue.directive('LimitInputNumber', {
 bind(el) {
  el.onkeypress = (event) => {
   return (/[\d]/.test(String.fromCharCode(event.keyCode || event.which))) || event.which === 8;
  };
  el.oninput = () => {
   el.children[0].value = el.children[0].value.replace(/\D/ig, '');
  };
 },
});

总结

到此这篇关于vue自定义指令限制输入框输入值的文章就介绍到这了,更多相关vue自定义指令限制输入框输入值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue项目如何部署到Tomcat服务器上

    Vue项目如何部署到Tomcat服务器上

    这篇文章主要介绍了Vue项目如何部署到Tomcat服务器上,Vue中自带webpack,可以通过一行命令将项目打包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • Vue中瀑布流布局与图片加载优化的实现

    Vue中瀑布流布局与图片加载优化的实现

    本文主要介绍了Vue中瀑布流布局与图片加载优化的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 详解Vite的新体验

    详解Vite的新体验

    这篇文章主要介绍了详解Vite的新体验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • vue Treeselect下拉树只能选择第N级元素实现代码

    vue Treeselect下拉树只能选择第N级元素实现代码

    这篇文章主要介绍了vue Treeselect下拉树只能选择第N级元素实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Vue3进行样式Scoped和Global的设置方法

    Vue3进行样式Scoped和Global的设置方法

    在 Vue 3 中,组件化开发成为了我们提升前端开发效率的利器,其中,样式的管理也是一个至关重要的部分,在 Vue 中,我们会经常使用两种样式作用域:Scoped 样式和 Global 样式,本文将通过示例代码来介绍Vue3如何进行样式Scoped和Global的设置,需要的朋友可以参考下
    2025-01-01
  • vue3中的ref和reactive定义数组方式

    vue3中的ref和reactive定义数组方式

    这篇文章主要介绍了vue3中的ref和reactive定义数组方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 使用Vue.js创建一个时间跟踪的单页应用

    使用Vue.js创建一个时间跟踪的单页应用

    这篇文章主要介绍了使用Vue.js创建一个时间跟踪的单页应用的相关资料,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • Vue3引入SVG图标的流程步骤

    Vue3引入SVG图标的流程步骤

    我们在开发 Vue 项目的时候会使用一些前端组件库,例如 Element、Ant Design 等,这些组件库虽然方便,但是也有一些缺点,比如内置的图标太少,例如我们开发医疗、财务、工程等一些前端项目,内置的图标不能满足我们的需求,所以我们常常在Vue项目中引入SVG图标
    2024-09-09
  • vue.js指令v-for使用及索引获取

    vue.js指令v-for使用及索引获取

    这篇文章主要为大家详细介绍了vue.js中v-for使用及索引获取,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • vue2.0 与 bootstrap datetimepicker的结合使用实例

    vue2.0 与 bootstrap datetimepicker的结合使用实例

    本篇文章主要介绍了vue2.0 与 bootstrap datetimepicker的结合使用实例,非常具有实用价值,需要的朋友可以参考下
    2017-05-05

最新评论