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 相关文章推荐
mailto的使用技巧分享
Dec 21 Javascript
JS保存、读取、换行、转Json报错处理方法
Jun 14 Javascript
javascript的渐进增强与平稳退化浅谈
Nov 12 Javascript
js生成随机数之random函数随机示例
Dec 20 Javascript
jQuery Ajax()方法使用指南
Nov 19 Javascript
JS实现从表格中动态删除指定行的方法
Mar 31 Javascript
javascript实现简单的可随机变色网页计算器示例
Dec 30 Javascript
javascript ES6中箭头函数注意细节小结
Feb 17 Javascript
解决ie img标签内存泄漏的问题
Oct 13 Javascript
关于Vue项目跨平台运行问题的解决方法
Sep 18 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
Aug 27 Javascript
基于Vue全局组件与局部组件的区别说明
Aug 11 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
星际实力自我测试
2020/03/04 星际争霸
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
PHP中cookies使用指南
2007/03/16 PHP
php 引用(&amp;)详解
2009/11/20 PHP
php开启安全模式后禁用的函数集合
2011/06/26 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
php格式化电话号码的方法
2015/04/24 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
分享几个超级震憾的图片特效
2012/01/08 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
Vue header组件开发详解
2018/01/26 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
Python递归函数定义与用法示例
2017/06/02 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
中国梦的演讲稿
2014/01/08 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
建筑管理专业求职信
2014/07/28 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
keepalived + nginx 实现高可用方案
2022/12/24 Servers