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

news/2024/7/10 2:50:27 标签: 前端, vue

大体逻辑是

  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.niftyadmin.cn/n/5364003.html

相关文章

Python 数据分析(PYDA)第三版(五)

原文:wesmckinney.com/book/ 译者:飞龙 协议:CC BY-NC-SA 4.0 十、数据聚合和组操作 原文:wesmckinney.com/book/data-aggregation 译者:飞龙 协议:CC BY-NC-SA 4.0 此开放访问网络版本的《Python 数据分析…

Vue引入Axios

1.命令安装axios和vue-axios npm install axios --save npm install vue-axios --save 2.package.json查看版本 3.在main.js中引用 import axios from axios; import VueAxios from vue-axios; Vue.use(VueAxios,axios) 4.如何使用 (初始化方法) 将下列代…

网络工程师必知的网络传输介质

晚上好,我的网工朋友。 高度互联的时代下,不管是日常的互联网浏览,还是全球范围内的数据传输,都离不开一个关键的组成部分:网络传输介质。 简而言之,就是在网络中传递信息的载体。 从光纤到无线电波&…

ElementUI Form:Form表单

ElementUI安装与使用指南 Form表单 点击下载learnelementuispringboot项目源码 效果图 el-form.vue&#xff08;Form表单&#xff09;页面效果图 项目里 el-form.vue代码 <script> export default {name: el_form,data() {var checkAge (rule, value, callback…

更新npm镜像源:淘宝镜像已过期,及时切换!

你好&#xff0c;我是小白Coding日志&#xff0c;一个热爱技术的程序员。在这里&#xff0c;我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客&#xff0c;一起在技术的世界里探索前行吧&#xff01; 前言 就在昨天…

Socks5代理IP在网络爬虫领域的实战运用

Socks5代理IP在跨境电商与网络爬虫领域的实战运用是多方面的&#xff0c;主要体现在以下几个关键方面&#xff1a; 1. 网络爬虫高效抓取数据&#xff1a; - 绕过限制&#xff1a;跨境电商平台和网站通常会设置访问频率限制或地域限制来保护服务器和防止数据滥用。通过使用Socks…

同济大学|高等数学|第八版|习题1-2

同济大学&#xff5c;高等数学&#xff5c;第八版&#xff5c;习题1-2&#xff5c;2.1 同济大学&#xff5c;高等数学&#xff5c;第八版&#xff5c;习题1-2&#xff5c;2.2 同济大学&#xff5c;高等数学&#xff5c;第八版&#xff5c;习题1-2&#xff5c;2.3 同济大学&…

JAVA 栈的实现

洗盘子 时间限制&#xff1a;1.000S 空间限制&#xff1a;128MB 题目描述 在餐厅里&#xff0c;洗盘子的工作需要使用到栈这种数据结构。 假设你手里有一个盘子堆放区。现在需要模拟洗盘子的过程&#xff0c;每个盘子都有一个编号。 盘子堆放区操作说明&#xff1a; 1…