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 相关文章推荐
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
Jan 09 Javascript
第一个JavaScript入门基础 document.write输出
Feb 22 Javascript
JavaScript面向对象之Prototypes和继承
Jul 12 Javascript
jQuery中读取json文件示例代码
May 10 Javascript
Javascript基础教程之argument 详解
Jan 18 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
JS制作类似选项卡切换的年历
Dec 03 Javascript
node.js 中间件express-session使用详解
May 20 Javascript
基于Proxy的小程序状态管理实现
Jun 14 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
Aug 20 Javascript
微信小程序开发打开另一个小程序的实现方法
May 17 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使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
python读取word文档的方法
2015/05/09 Python
python开发之字符串string操作方法实例详解
2015/11/12 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
汽车技术服务英文求职信范文
2014/01/02 职场文书
会计核算科岗位职责
2014/03/19 职场文书
护士求职信
2014/07/05 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
工作表现证明
2015/06/15 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
机械生产实习心得体会
2016/01/22 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技