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


Posted in Javascript onAugust 30, 2020

需求

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

本文内容基于 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;
 };
 },
});

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

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

oninput 事件

oninput 事件在用户输入时触发

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

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

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

完整代码

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自定义指令限制输入框输入值内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery 操作单选框,复选框,下拉列表实现代码
Oct 27 Javascript
jQuery数组处理代码详解(含实例演示)
Feb 03 Javascript
脚本合并提升javascript性能示例
Feb 24 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
jQuery插件jquery-barcode实现条码打印的方法
Nov 25 Javascript
javascript匀速动画和缓冲动画详解
Oct 20 Javascript
Bootstrap文件上传组件之bootstrap fileinput
Nov 25 Javascript
react native实现往服务器上传网络图片的实例
Aug 07 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
Sep 05 Javascript
vue登录路由验证的实现
Dec 13 Javascript
详解node child_process模块学习笔记
Jan 24 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
Feb 24 Javascript
JS性能优化实现方法及优点进行
Aug 30 #Javascript
如何检测JavaScript中的死循环示例详解
Aug 30 #Javascript
JavaScript中CreateTextFile函数
Aug 30 #Javascript
详解vue组件之间的通信
Aug 30 #Javascript
如何阻止移动端浏览器点击图片浏览
Aug 29 #Javascript
JavaScript事件委托实现原理及优点进行
Aug 29 #Javascript
JS如何判断对象是否包含某个属性
Aug 29 #Javascript
You might like
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
jQuery 1.0.2
2006/10/11 Javascript
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
python实现从ftp服务器下载文件的方法
2015/04/30 Python
python奇偶行分开存储实现代码
2018/03/19 Python
python 日志增量抓取实现方法
2018/04/28 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
如何更优雅地写python代码
2019/07/02 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
帕克纽约:PARKER NY
2018/12/09 全球购物
财务部副经理岗位职责
2014/03/14 职场文书
经济管理自荐书
2014/06/09 职场文书
教师节感谢信
2015/01/22 职场文书
会计岗位职责范本
2015/04/02 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
详解Mysql 函数调用优化
2021/04/07 MySQL
python文件名批量重命名脚本实例代码
2021/04/22 Python
Pygame Event事件模块的详细示例
2021/11/17 Python
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电