vue自定义指令限制输入框输入值的步骤与完整代码
需求
前端开发过程中,经常遇到表单校验的需求,比如校验用户输入框的内容,限制用户只能输入数字。
本文内容基于element-ui,el-form组件可以绑定model、rule用于表单内容校验,但如果有多个表单多个输入框那就得写很多个rule,虽然方法可以通用可是使用起来也是比较繁琐的,可通过自定义执行实现一次注册,多次使用。
Vue自定义指令
我们使用el-input作为表单的输入框
1.先注册一个自定义指令
importVuefrom'vue'; Vue.directive('LimitInputNumber',{ bind(el){ #dosomething }, });
2.使用自定义指令
直接在组件内绑定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; }; }, });
但该事件存在一个问题,就是在中文输入法的时候无法触发事件,导致用户可以输入中文
oninput事件
oninput事件在用户输入时触发
可在事件触发时进行过滤,过滤掉那些不为数字的值,并重新绑定到输入框上,解决了中文输入法下的问题
Vue.directive('LimitInputNumber',{ bind(el){ el.oninput=()=>{ el.children[0].value=el.children[0].value.replace(/\D/ig,''); }; }, });
完整代码
importVuefrom'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自定义指令限制输入框输入值内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。