当前位置: 首页 > news >正文

前端输入框简单实现检测@成员输入

大体逻辑是

  1. 给input框添加一个input监听,并判断输入是否为@
  2. 获取当前光标的位置,你输入的@肯定在光标之前,且肯定是最后一个@
  3. input输入的内容换行可以被认为空格,需要进行全局替换
  4. 判断@成功的逻辑分为两部分,前方一般来说是为空或者@index的下标为0,后方的判断是到下一个间隔(空格)之间不能存在@,这个主要看产品需求,一般情况是这样
     //获取dom,并添加input监听this.$refs.input.addEventListener('input', (event) => {//判断if (event.data === '@') {//获取当前焦点位置const selectionStart = event.srcElement.selectionStart;//将输入值的换行替换成 空格const value = this.newComment.replace(/[\r\n]/g, ' ');//获取到当前焦点位置最后一个@const start = value.lastIndexOf('@', selectionStart);//获取从焦点位置后第一个空格的下标const fistSpaceIndexFromStart = value.indexOf(' ', selectionStart);//能够找到就用第一个空格的下标否则就找到最后const end = fistSpaceIndexFromStart > -1 ? fistSpaceIndexFromStart : value.length;//获取到@之后到下一个间隔之间的内容const termWithTrigger = value.substring(start, end);//前方的判断-不包含index为0的情况const startBeforeHasSpace = start > 0 && value[start - 1] === ' ';if ((startBeforeHasSpace || start === 0) &&!termWithTrigger.includes(' ') &&!termWithTrigger.includes('@', 1)) {//todo//@成功之后要做的事情}}});
http://www.lryc.cn/news/293656.html

相关文章:

  • 通过与chatGPT交流实现零样本事件抽取
  • 使用nodejs和html布局一个简单的视频播放网站,但是使用localhost:端口访问html无法加载视频
  • 【AG32VF407】国产MCU+FPGA Verilog双边沿检测输出方波
  • [晓理紫]每日论文分享(有中文摘要,源码或项目地址)--强化学习、模仿学习、机器人
  • 为什么说TiDB在线扩容对业务几乎没有影响
  • STM32--SPI通信协议(2)W25Q64简介
  • svn安装与搭建
  • 什么是缓存击穿、缓存穿透、缓存雪崩?
  • springboot153相亲网站
  • CMake生成osg的FFMPEG插件及Windows下不生成VS工程问题解决
  • 代码随想录算法训练营Day25 | 216.组合总和III、17.电话号码的字母组合
  • 故障诊断 | 一文解决,SVM支持向量机的故障诊断(Matlab)
  • 12.1 Web开发_DOMBOM:JS关联CSS(❤❤)
  • scoped样式隔离原理
  • 降价不是杀手锏,和府捞面打起“养生牌”
  • 在WORD中设置公式居中编号右对齐设置方式
  • 如何使用 Supabase Auth 在您的应用程序中设置身份验证
  • 带libc源码gdb动态调试(导入glibc库使得可执行文件动态调试时可看见调用库函数源码)
  • 初级通信工程师-通信动力与环境
  • clickhouse在MES中的应用-跟踪扫描
  • 适用于嵌入式单片机的压缩算法
  • 软件工程(最简式总结)
  • Docker基础(持续更新中)
  • Vue工程引入Element-ui
  • 算法学习——华为机考题库9(HJ56 - HJ63)
  • Maven安装,学习笔记,详细整理maven的一些配置
  • STM32--USART串口(2)串口外设
  • Unity之做一个最简单的FPS游戏demo
  • 【Springboot】单元测试Junit5应用
  • 【INTEL(ALTERA)】内部错误:子系统:PTI,文件:/quartus/tsm/pti/pti_delay_annotator.cpp