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和DOM Interfaces来处理HTML
Oct 09 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
Jun 14 Javascript
javascript复制粘贴与clipboardData的使用
Oct 16 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
Jun 20 Javascript
AngularJS基础 ng-init 指令简单示例
Aug 02 Javascript
Move.js入门
Feb 08 Javascript
angularJS之$http:与服务器交互示例
Mar 17 Javascript
解决LayUI表单获取不到data的问题
Aug 20 Javascript
详解Vue.js v-for不支持IE9的解决方法
Dec 29 Javascript
js时间转换毫秒的实例代码
Aug 21 Javascript
如何使用Jquery动态生成二级选项列表
Feb 06 jQuery
JS简易计算器实例讲解
Jun 30 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实现的生成静态HTML速度快类库
2007/03/31 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
Prototype源码浅析 Number部分
2012/01/16 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
layui的select联动实现代码
2019/09/28 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
[01:25]DOTA2超级联赛专访iG 将调整状态找回自己
2013/06/05 DOTA
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
python之array赋值技巧分享
2019/11/28 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
给老师的一封建议书
2014/03/13 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
委托书怎样写
2014/08/30 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
详解PyTorch模型保存与加载
2022/04/28 Python