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

大体逻辑是

  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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值