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 相关文章推荐
JavaScript使用cookie
Feb 02 Javascript
JS request函数 用来获取url参数
May 17 Javascript
javaScript NameSpace 简单说明介绍
Jul 18 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
JavaScript 过滤关键字
Mar 20 Javascript
Angularjs 事件指令详细整理
Jul 27 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
Sep 05 Javascript
捕获未处理的Promise错误方法
Oct 13 Javascript
AngularJs点击状态值改变背景色的实例
Dec 18 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
Oct 26 Javascript
使用webpack打包后的vue项目如何正确运行(express)
Oct 26 Javascript
KOA+egg.js集成kafka消息队列的示例
Nov 09 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
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
php实现的生成排列算法示例
2019/07/25 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
python制作花瓣网美女图片爬虫
2015/10/28 Python
深入理解Python3中的http.client模块
2017/03/29 Python
Python单元测试实例详解
2018/05/25 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
优秀通讯员事迹材料
2014/01/28 职场文书
小学教师节活动方案
2014/01/31 职场文书
2014村务公开实施方案
2014/02/25 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书