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

大体逻辑是

  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
         	//@成功之后要做的事情
        }
      }
    });

相关推荐

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

    2024-02-03 19:50:04       54 阅读
  2. C#如何实现一个输入输入,匹配提示数据

    2024-02-03 19:50:04       51 阅读
  3. vue3 实现 input 输入聚焦

    2024-02-03 19:50:04       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-03 19:50:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-03 19:50:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-03 19:50:04       82 阅读
  4. Python语言-面向对象

    2024-02-03 19:50:04       91 阅读

热门阅读

  1. vscode连接ssh失败记录(20240202)

    2024-02-03 19:50:04       52 阅读
  2. Qt-互斥量-临界区-QMutex-QMutexLocker-QReadWriteLock

    2024-02-03 19:50:04       53 阅读
  3. 案例六:GPT磁盘丢失的恢复

    2024-02-03 19:50:04       48 阅读
  4. 乘船问题(c++题解)

    2024-02-03 19:50:04       51 阅读
  5. vue使用pdf.js实现在线查看pdf文件

    2024-02-03 19:50:04       48 阅读
  6. 类银河恶魔城学习记录1-7-DashState源代码 P34

    2024-02-03 19:50:04       44 阅读
  7. STL简介

    STL简介

    2024-02-03 19:50:04      50 阅读
  8. 【力扣经典面试题】55. 跳跃游戏

    2024-02-03 19:50:04       45 阅读
  9. mysql主流版本5.5/5.6/5.7/8.0重置修改密码方法

    2024-02-03 19:50:04       59 阅读
  10. Ingress

    Ingress

    2024-02-03 19:50:04      45 阅读
  11. MicroPython核心:实现一个模块

    2024-02-03 19:50:04       56 阅读