参考地址:vue el-input中禁止输入表情符号_笑到世界都狼狈的博客-CSDN博客_输入框禁止输入表情

你知道compositionstart和compositionend吗 - 掘金

const findEle = (parent, type) => { return parent.tagName.toLowerCase() === type ? parent : parent.querySelector(type)
}const emoji = {bind(el, binding, vnode, oldVnode) {const regex = /(\ud83c[\udc00-\udfff])|(\ud83d[\udc00-\udfff])|(\ud83e[\udc00-\udfff])|[\u2100-\u32ff]|[\u0030-\u007f][\u20d0-\u20ff]|[\u0080-\u00ff]/g;const obj = findEle(el, 'input') || findEle(el, 'textarea');const zclearNoNum = function(e) {if (e.target.composing) return;const match = regex.exec(obj.value); if (match) {/* for (let i=0;i<match.length;i++) {obj.value = obj.value.replace(match[i],"");}*/obj.value = obj.value.replace(regex, '');zclearNoNum(e);}// 触发v-model的更新obj.dispatchEvent(new Event('input'));}const zblur = function(e) {zclearNoNum(e);setTimeout(() => {const match = regex.exec(obj.value);if (match) {obj.value = obj.value.replace(regex, '');zclearNoNum(e);}// 触发v-model的更新obj.dispatchEvent(new Event('change'));}, 50)}obj.onkeyup = zclearNoNum;obj.onblur = zblur;function onCompositionStart(e) {e.target.composing = true}function onCompositionEnd(e) {// console.log('按回车将字输入', e.target.value)e.target.composing = falseobj.dispatchEvent(new Event('change'));setTimeout(() => {if (obj.value) {obj.value = obj.value.replace(regex, '');zclearNoNum(e);}// 触发v-model的更新obj.dispatchEvent(new Event('change'));}, 50)}obj.addEventListener('compositionstart', onCompositionStart)obj.addEventListener('compositionend', onCompositionEnd)},update(el, binding, vnode, oldVnode) {}
}
export default emoji

在main.js中全局注册指令

import emoji from './common/utils/emoji';Vue.directive('emoji', emoji)

使用场景

// 在input框添加v-emoji指令既可
<a-input:maxLength="50"v-emojiautocomplete="off"placeholder="请输入名称"v-model= "form.label" />

Vue中禁止输入表情符号指令相关推荐

  1. android中禁止输入表情符号,Android EdText编辑框禁止输入表情符号(使用正则表达式)...

    使用正则表达式 p s f s not_emoji = "[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u ...

  2. vue中通过自定义指令将汉字转化为首字母大写、首字母小写、大写、小写的拼音

    使用情景: 在文本框中输入内容,例如姓名 在页面中将姓名转化为姓名的拼音,包括大写拼音.小写拼音.首字母大写拼音.大写拼音缩写.小写拼音缩写 新建一个 pinyin.js 文件 这是一串又臭又长的un ...

  3. vue中自定义全局指令报错

    我主要从三个方面来检查 1.首先检查是否拼写错误,尽量粘贴,不要手写 2.区分好变量和字符串的差别 <p v-color="'red'">全局指令</p> ...

  4. vue中如何自定义指令

    目录 一. 什么是自定义指令 二. 如何自定义指令 三.应用场景实现 输入框防抖 图片懒加载 一键 Copy的功能 拖拽 下拉菜单 相对时间转换 一. 什么是自定义指令 我们看到的v-开头的行内属性, ...

  5. vue中如何自定义指令directive

    一. 什么是自定义指令 我们看到的v-开头的行内属性,都是指令,不同的指令可以完成或实现不同的功能,对普通 DOM元素进行底层操作,这时候就会用到自定义指令.除了核心功能默认内置的指令 (v-mode ...

  6. vue中的v-text指令之Vue知识点归纳(二)

    本文中将描述: v-text 的指令的基本使用 v-text 与差值表达式的区别 1 简述 v-text会将元素当成纯文本输出 <!DOCTYPE html> <html lang= ...

  7. Vue中常见的指令及其含义?

    v-text 只解析文本信息 v-html 可以解析超文本标签 v-if/v-else-if/v-else 与javaScript中的一样,用于判断DOM的显示与隐藏. v-show 通过控制元素的d ...

  8. 手把手教你在vue中使用自定义指令全局封装防抖节流函数

    第一步在src下创建utils文件夹并创建common.js文件 //'@/utils/common.js' 文件function throttle(bindObj, fn, delay) {bind ...

  9. 【Vue】v-bind v-model指令的使用(实现计算器效果)

    在Vue学习笔记(一)中,我们已经了解了Vue中的基本指令,比如 v-text,v-html,v-bind,v-on 等指令的使用,并且介绍了 MVVM 模式,那么怎么实现动态的在M和V之间数据传递呢 ...

最新文章

  1. 批量关闭公众号推送_微信内测新功能:提醒用户可停止接收长期不阅读公众号推送...
  2. 虚拟机共享文件夹引发的一点思考
  3. Spring源码:FactoryBean
  4. 微服务系列实践 .NET CORE
  5. shellcode编写
  6. initializer element is not a compile-time constant
  7. RHEL7及CentOS7的语言、字符编码、键盘映射、X11布局设置(localectl)-系统管理(1)...
  8. App测试中ios和Android的区别1
  9. 删除文件时提示“对于目标文件系统,文件xx过大”的处理办法”的解决办法
  10. 使用github安装atom插件
  11. 怎么判断目标点是否在指定地图版块上
  12. sql server 2000 打了sp4补丁包仍不能监听1433端口问题的解决
  13. 计算机扫描服务开启,win7系统,电脑打印机右键中无扫描选项(WIA已启动)
  14. python的list的基本操作、list循环、切片、字典基本操作、字典嵌套、字符串常用方法...
  15. U盘插到电脑上无反应怎么办?
  16. IPv6地址的无状态自动配置
  17. 8.前端JavaScript之数据类型
  18. 1275配对碱基链 1852玛雅文字 +map讲解 (map)
  19. [Q] google map 和 google earth pro 3d模式 黑屏
  20. 什么是VI?(虚拟仪器)

热门文章

  1. 中国自主轿车汽车品牌总汇(已上市)[原创]
  2. 均方根误差和标准差的定义:matlab
  3. ContentResolver查询音乐目录
  4. Python 3 字符串 rstrip( ) 方法(转载)
  5. python 通讯录
  6. Ubuntu16.04/16.10下缺失brightness设置,解决屏幕亮度调节的问题
  7. 夏天能做的小生意,有哪些项目能每月收入一万多?推荐一下
  8. GWAS曼哈顿图总结
  9. 生成男女体重的随机二维数据
  10. 海昇智:拼多多开店保证金什么时候能退?