极乐门资源网 Design By www.ioogu.com
需求
前端开发过程中,经常遇到表单校验的需求,比如校验用户输入框的内容,限制用户只能输入数字。
本文内容基于 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; }; }, });
但该事件存在一个问题,就是在中文输入法的时候无法触发事件,导致用户可以输入中文
oninput 事件
oninput 事件在用户输入时触发
可在事件触发时进行过滤,过滤掉那些不为数字的值,并重新绑定到输入框上,解决了中文输入法下的问题
Vue.directive('LimitInputNumber', { bind(el) { el.oninput = () => { el.children[0].value = el.children[0].value.replace(/\D/ig, ''); }; }, });
完整代码
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, ''); }; }, });
总结
极乐门资源网 Design By www.ioogu.com
极乐门资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
极乐门资源网 Design By www.ioogu.com
暂无vue自定义指令限制输入框输入值的步骤与完整代码的评论...
更新日志
2024年11月20日
2024年11月20日
- 柏菲·珞叔作品集《金色大厅2》限量开盘母带ORMCD[低速原抓WAV+CUE]
- Gareth.T《sad songs(Explicit)》[320K/MP3][29.03MB]
- Gareth.T《sad songs(Explicit)》[FLAC/分轨][152.85MB]
- 证声音乐图书馆《海风摇曳·盛夏爵士曲》[320K/MP3][63.06MB]
- 龚玥《金装龚玥HQCD》头版限量[WAV分轨]
- 李小春《吻别》萨克斯演奏经典[原抓WAV+CUE]
- 齐秦《辉煌30年24K珍藏版》2CD[WAV+CUE]
- 证声音乐图书馆《海风摇曳·盛夏爵士曲》[FLAC/分轨][321.47MB]
- 群星 《世界经典汽车音乐》 [WAV分轨][1G]
- 冷漠.2011 《冷漠的爱DSD》[WAV+CUE][1.2G]
- 陈明《流金岁月精逊【中唱】【WAV+CUE】
- 群星《Jazz-Ladies1-2爵士女伶1-2》HQCD/2CD[原抓WAV+CUE]
- 群星《美女私房歌》(黑胶)[WAV分轨]
- 郑源.2009《试音天碟》24BIT-96KHZ[WAV+CUE][1.2G]
- 飞利浦试音碟 《环球群星监听录》SACD香港版[WAV+CUE][1.1G]