除去特殊字符和表情包的指令

    1. import Vue from 'vue';
    2. let findEle = (parent, type) => {
    3. return parent.tagName.toLowerCase() === type ? parent : parent.querySelector(type)
    4. }
    5. const trigger = (el, type) => {
    6. const e = document.createEvent('HTMLEvents')
    7. e.initEvent(type, true, true)
    8. el.dispatchEvent(e)
    9. }
    10. const emoji = Vue.directive('emoji', {
    11. bind: function (el) {
    12. // 正则规则可根据需求自定义
    13. var regRule = /[`~!@#$%^&*()+=|{}':;',/\/\[\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]|[\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/;
    14. let $inp = findEle(el, 'input')
    15. el.$inp = $inp
    16. $inp.handle = function () {
    17. let val = $inp.value
    18. if (regRule.test(val)) {
    19. Vue.prototype.$message({
    20. type: 'warning',
    21. message: '不能输入特殊字符或者表情包'
    22. })
    23. }
    24. $inp.value = val.replace(regRule, '');
    25. trigger($inp, 'input')
    26. }
    27. $inp.addEventListener('keyup', $inp.handle)
    28. },
    29. unbind: function (el) {
    30. el.$inp.removeEventListener('keyup', el.$inp.handle)
    31. },
    32. })
    33. export {emoji}