经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
Vue全局解决限制input输入表情和特殊字符方案
来源:cnblogs  作者:梓鹏  时间:2020/12/21 15:07:11  对本文有异议

背景:开发中遇到的表单输入,往往会有对输入内容的限制,比如不能输入表情和特殊字符,只能输入数字或字母等。

我们常规方法是在每一个表单的 on-change 事件上做处理。

  1. 1 <template>
  2. 2 <input type="text" v-model="note" @change="vaidateEmoji" />
  3. 3 </template>
  4. 4
  5. 5 <script> export default {
  6. 6 methods: {
  7. 7 vaidateEmoji() {
  8. 8 var reg = /[^u4E00-u9FA5|d|a-zA-Z|rns,.?!,。?!…—&$=()-+/*{}[]]|s/g
  9. 9 this.note = this.note.replace(reg, '')
  10. 10 },
  11. 11 },
  12. 12 }
  13. 13 </script>

这样代码量比较大而且不好维护,所以我们需要自定义一个指令来解决这问题。

需求:根据正则表达式,设计自定义处理表单输入规则的指令,下面以禁止输入表情和特殊字符为例。

  1. 1 let findEle = (parent, type) => {
  2. 2 return parent.tagName.toLowerCase() === type ? parent : parent.querySelector(type)
  3. 3 }
  4. 4
  5. 5 const trigger = (el, type) => {
  6. 6 const e = document.createEvent('HTMLEvents')
  7. 7 e.initEvent(type, true, true)
  8. 8 el.dispatchEvent(e)
  9. 9 }
  10. 10
  11. 11 const emoji = {
  12. 12 bind: function (el, binding, vnode) {
  13. 13 // 正则规则可根据需求自定义
  14. 14 var regRule = /[^u4E00-u9FA5|d|a-zA-Z|rns,.?!,。?!…—&$=()-+/*{}[]]|s/g
  15. 15 let $inp = findEle(el, 'input')
  16. 16 el.$inp = $inp
  17. 17 $inp.handle = function () {
  18. 18 let val = $inp.value
  19. 19 $inp.value = val.replace(regRule, '')
  20. 20
  21. 21 trigger($inp, 'input')
  22. 22 }
  23. 23 $inp.addEventListener('keyup', $inp.handle)
  24. 24 },
  25. 25 unbind: function (el) {
  26. 26 el.$inp.removeEventListener('keyup', el.$inp.handle)
  27. 27 },
  28. 28 }
  29. 29
  30. 30 export default emoji

使用:将需要校验的输入框加上 v-emoji 即可

 

 1 <template> 2 <input type="text" v-model="note" v-emoji /> 3 </template> 

 

原文链接:http://www.cnblogs.com/cswzp/p/14153851.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号