最近项目中有一个需求,所有的文本输入框需要过滤掉表情符号,但是觉得每次表单验证的时候去判断,有点麻烦。于是我想到了自定义一个指令,后续遇到需要删除表情符号的输入框,直接通过指令将表情符号删除就好了,方便快捷!

一、首先看看Vue自定义指令文档

https://cn.vuejs.org/v2/guide/custom-directive.html

二、在项目的directive中自定义一个指令:noEmoji

  这里需要用到的是对传入的binding的参数进行dom操作,将组件中的vue实例传入,改变vue实例中data的值

import Vue from 'vue';
import { Message } from 'element-ui' // 过滤输入框表情
Vue.directive('noEmoji', {
bind: function (el) {
console.log(el, 'bind')
},
inserted: function (el) {
console.log(el, 'inserted')
},
update: function clearEmoji(el, binding, vnode, oldVnode) {
let emojiRegex = require('emoji-regex')
let regex = emojiRegex()
let match = regex.exec(el.value)
if(match) {
Message('此输入框不支持表情')
el.value = el.value.replace(match[0], "")
if (binding && binding.value) {
let vm = binding.value.vm
let attr = binding.value.attr
let length = attr.length
switch (length) {
case 1:
vm.$set(vm, attr[0], el.value);
break;
case 2:
vm.$set(vm[attr[0]], attr[1], el.value);
break;
default:
return false
}
}
clearEmoji(el)
}
},
componentUpdated: function(el, binding, vnode, oldVnode) {
console.log(el, 'componentUpdated')
},
unbind: function(el, binding, vnode, oldVnode) {
console.log(el, 'unbind')
},
})

三、组件中使用指令后,input框中的表情符号会实时删除:

<input v-model="addForm.name" class="el-input__inner"  v-noEmoji="{vm : this, attr: ['addForm','name']}" placeholder="表单名称" />

四、注意点:

  这个指令只支持原生的dom,对于el-input这样的UI组件标签失效,因为自定义指令没有办法改变el-input标签的dom

最新文章

  1. Manacher&#39;s Algorithm 马拉车算法
  2. hibernate 异常:could not execute statement
  3. java语法基础
  4. win上搭建react-native android环境
  5. 谱多流形聚类SMMC
  6. OS X 10.10.5编译Android5.1.1源码
  7. LocalDB简介和在VS2012及以上版本的使用
  8. 张艾迪(创始人):发明Global.World.224C的天才
  9. Apache2 Axis2/C 搭建 hello world
  10. js 如何获取文本框中光标索引位置
  11. GitHub使用指导
  12. Linux工具安装和常用配置
  13. Java基础之一反射
  14. Confluence 6 使用 JMX 界面实时监控
  15. curl命令基本使用小总结
  16. minix中二分查找bsearch的实现
  17. emacs之配置2,UI基本设置
  18. eclipse调试时增加jvm参数
  19. 20155315实验三 敏捷开发与XP实践
  20. zend studio配置调试(Xdebug方式)

热门文章

  1. Java终止线程的三种方式
  2. LeetCode 112. 路径总和(Path Sum)
  3. Android ROM适配
  4. 微信小程序跳转问题:wx.redirectTo、wx.navigateTo、wx.reLaunch、wx.switchTap、wx.navigateBack区别
  5. Understanding decimal(p, s) of sqlite3
  6. selenium操作cookie
  7. lumen中间件中设置响应header
  8. 自然语言处理NLP学习笔记一:概念与模型初探
  9. MySQL知识篇-SQL3
  10. java中单例模式的优缺点