vue实现光标插入模板和删除指定模板内容

news2024/9/25 1:22:09

需求:
文本可插入模板文字;
同时在“%虚拟机名称%”后一个%删除,会将“%虚拟机名称%”选中删除
请添加图片描述

以下代码可以直接复制使用:

<template>
  <div>
    <div><b>需求:</b> <br> 文本可插入模板文字;<br>同时在“%虚拟机名称%”后一个%删除,会将“%虚拟机名称%”选中删除</b></div>
    <el-button type="primary" @click="setDesc(tmpTxt)">
      告警文案
    </el-button>
    <el-input
      type="textarea"
      :autosize="{ minRows: 2, maxRows: 4 }"
      placeholder="请输入告警内容"
      v-model="txt"
      @blur="getBlurStatus"
      @keydown.delete.native="del"
    >
    </el-input>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tmpTxt: `%虚拟机名称%数据异常,请及时查看问题`, // 模板固定文本
      txt: "", // 输入框内容
      cursorIndex: "", // 光标位置
    };
  },
  methods: {
    // 失去焦点时保存光标位置
    getBlurStatus(e) {
      this.cursorIndex = e.srcElement.selectionStart;
    },
    // 输入框赋值
    setDesc(tmpTxt) {
      // this.txt = `%虚拟机名称%数据异常,请及时查看问题`;

      let num = this.cursorIndex;
      let type = typeof num;
      let cont = this.txt;
      if (type == "number") {
        //插入到指定光标处
        let right = cont.slice(0, num);
        let left = cont.slice(num);
        this.txt = right + tmpTxt + left;
      } else {
        //没有指定插入直接添加到最后
        this.txt += tmpTxt;
      }
    },
    // 删除逻辑
    del(e) {
      const content = this.txt;
      if (!content) return; // 没有内容就不用进行后面操作
      const start = e.target.selectionStart; // 光标起始位置
      const end = e.target.selectionEnd; // 光标结束位置
      if (start === end) {
        // 删除操作判断,
        const arr = ["%虚拟机名称%", "%物理机名称%"]; // 需要删除的文本
        // 查询光标前后7个字符长度文字,是否有要删除的文本
        const left = content.slice(end - 7, end);
        const right = content.slice(end - 1, end + 6); // 因为我们的变量长度都为7,所以截取左右长度为7的字符串
        console.log(start, end, left, right);
        if (arr.includes(left)) {
          // 判断变量中是否存在,存在则设置光标位置,不存在则不用管
          e.target.setSelectionRange(end - 7, end); // 设置光标位置
          e.preventDefault(); // 阻止浏览器的默认行为,防止删除
        } else if (arr.includes(right)) {
          e.target.setSelectionRange(end - 1, end + 6);
          e.preventDefault();
        }
      }
    }
  }
};
</script>

<style></style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1615921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI大模型日报#0422:深扒「全球TOP 10大模型团队」、扎克伯格 Llama 3访谈

导读&#xff1a; 欢迎阅读《AI大模型日报》&#xff0c;内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。 标题: 文本生成8K、360度全景世界&#xff01;Model 3重磅发布 摘要: Blockade Labs发布了新模型Model 3&#xff0c;相比Model 2&#…

【漏洞复现】Linksys RE7000无线扩展器 命令注入漏洞(CVE-2024-25852)

0x01 产品简介 Linksys RE7000无线扩展器是一款功能强大、操作便捷的产品,旨在为用户提供无缝的网络覆盖和更快速、更稳定的网络连接体验。 0x02 漏洞概述 Linksys RE7000无线扩展器存在命令注入漏洞,未授权的攻击者可以通过该漏洞执行任意命令,控制服务器。 0x03 测绘语…

【RSGIS数据资源】1995-2015年亚洲主要国家多种植制度水稻4km单产栅格数据集

文章目录 1. 数据集概况2.数据格式3. 文件命名规则4. 数据生产单位5.元数据6. 引用参考文献 1. 数据集概况 针对大范围高时空分辨率水稻单产数据集缺失的现状&#xff0c;基于亚洲水稻年分布图&#xff0c;提出了一种基于机器学习的精细化格网水稻产量估算方法&#xff0c;利用…

镜像VS快照详细对比

不同之处 依赖性&#xff1a; 快照通常依赖于原始系统的状态或之前的快照。 而镜像是独立的&#xff0c;包含了所需的全部数据。 目的&#xff1a; 镜像用于创建或恢复整个系统&#xff0c;适用于系统迁移、备份或恢复等场景。 快照用于数据恢复&#xff0c;可以快速回滚到之前…

【C++】---STL之vector详解

【C】---STL之vector详解 一、vector的介绍&#xff1a;二、vector的成员函数&#xff1a;1、vector类的构造函数2、vector的元素访问符3、vector的迭代器4、vector的模版5、vector的拷贝构造6、vector的容量&#xff08;1&#xff09;vector的增容机制&#xff08;2&#xff0…

机器人实验室CNRS-AIST JRL, IRL介绍

一、背景 作为搞机器人方向的学生&#xff0c;必须时常关注国际上顶尖实验室的研究成果&#xff0c;以免自己做的方向out&#xff0c;除了大家耳熟能详的Boston Dynamics&#xff0c;还有许多非常厉害的机器人实验室值得我们关注&#xff0c;如日本的CNRS-AIST JRL, IRL实验室…

GenVideo、SkelFormer、EfficientGS、HOLD、Motion Synthesis、Learn2Talk

本文首发于公众号&#xff1a;机器感知 GenVideo、SkelFormer、EfficientGS、HOLD、Motion Synthesis、Learn2Talk Enabling Stateful Behaviors for Diffusion-based Policy Learning While imitation learning provides a simple and effective framework for policy learni…

web前端框架设计第五课-计算属性与监听属性

web前端框架设计第五课-计算属性与监听属性 一.预习笔记 1.计算属性 computed split():拆分 reverse():倒序 join():拼接 计算属性与方法&#xff0c;两者效果一致&#xff0c;但是computed 是基于它的依赖缓存&#xff0c;只有相关依赖发生改变时才会重新取值。而使用 met…

Rumble Club加速器哪个好用 稳定好用的联机加速器推荐

Rumble Club加速器哪个好用 稳定好用的联机加速器推荐 说到Rumble Club这款游戏&#xff0c;各位休闲玩家肯定不陌生&#xff0c;这是一款基于物理定律的在线玩家对战游戏&#xff0c;玩法独特且充满乐趣。玩家可以使用各种富有想象力的方式推搡、击打和超越对手&#xff0c;以…

路由过滤,路由策略小实验

目录 一&#xff0c;实验拓扑&#xff1a; 二&#xff0c;实验要求&#xff1a; 三&#xff0c;实验思路&#xff1a; 四&#xff0c;实验过程&#xff1a; 1&#xff0c;IP配置&#xff1a; 2、R1 和R2 运行 RIPv2&#xff0c;R2&#xff0c;R3 和R4运行 oSPF&#xff0…

卫星导航简介

本文旨在对卫星导航系统进行简要介绍&#xff0c;包括其基本原理、发展历程以及在现代社会中的广泛应用。文章首先阐述了卫星导航的基本原理&#xff0c;即利用卫星发射的信号进行定位和导航。接着&#xff0c;回顾了卫星导航技术的发展历程&#xff0c;从早期的试验阶段到如今…

OneNote插件推荐(OneMore)

使用OneNote编辑笔记时希望有一个插件能够实现markdown的功能&#xff0c;于是发现了OneMark&#xff0c;后面用着用着&#xff0c;OneMark竟然收费了&#xff0c;于是苦苦找寻好用的markdown插件&#xff0c;无果&#xff0c;此时发现我的目标主要是实现对代码的格式化&#x…

vue3中web前端JS动画案例(二)多物体运动-多值运动

<script setup> import { ref, onMounted, watch } from vue // ----------------------- 01 js 动画介绍--------------------- // 1、匀速运动 // 2、缓动运动&#xff08;常见&#xff09; // 3、透明度运动 // 4、多物体运动 // 5、多值动画// 6、自己的动画框架 // …

DBUnit增强:填充随机数据和相对时间数据

痛点 测试环境验证时&#xff0c;遇到与当前相对时间相关的测试吗&#xff1f;准备一份SQL&#xff1f;隔一段时间就不能用了。每过一段时间去更新脚本或重置系统时间&#xff1f;看上去也不是很合适的解决方案。依赖数据测试时要重新做&#xff0c;演示时候得全部改&#xff…

Ubuntu-18.04本地化部署Rustdesk服务器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、配置防火墙二、安装三大件1.下载三大件2.安装三大件 三、安装客户端1.下载客户端1.Windows2.Linux 四、配置客户端连接服务器五、总结 前言 如果你是想数据…

腾讯云轻量2核2G4M服务器优惠价格99元一年,多配置报价单

腾讯云轻量2核2G4M服务器优惠价格99元一年&#xff0c;多配置报价单。腾讯云服务器价格表2024年最新价格&#xff0c;轻量2核2G3M服务器61元一年、2核2G4M服务器99元1年&#xff0c;三年560元、2核4G5M服务器165元一年、3年900元、轻量4核8M12M服务器646元15个月、4核16G10M配置…

JavaWeb开发06-原理-Spring配置优先级-Bean管理-SpringBoot原理-Maven继承和聚合-私服

一、Spring配置优先级 不同配置文件&#xff0c;配置同一个属性谁有效 properties>yml>yaml 命令行参数>Java系统属性 项目打包后要改变属性&#xff1a; 红色是Java系统属性&#xff0c;绿色是命令行参数 ‘ 二、Bean管理 1.获取bean 获取IOC容器&#xff1a;ap…

SpringAOP从入门到源码分析大全(三)ProxyFactory源码分析

文章目录 系列文档索引五、ProxyFactory源码分析1、案例2、认识TargetSource&#xff08;1&#xff09;何时用到TargetSource&#xff08;2&#xff09;Lazy的原理&#xff08;3&#xff09;应用TargetSource 3、ProxyFactory选择cglib或jdk动态代理原理4、jdk代理获取代理方法…

内存泄漏详解

一、什么是内存泄漏&#xff1f;二、内存泄漏的原因三、内存泄漏的影响四、如何检测和解决内存泄漏&#xff1f;五、总结 一、什么是内存泄漏&#xff1f; 内存泄漏指的是程序中已分配的内存没有被正确释放&#xff0c;导致这部分内存无法被再次利用&#xff0c;最终导致内存资…

【Java框架】SpringBoot(一)基本入门

目录 SpringBoot介绍Spring Boot的诞生SpringBoot特点Spring和Spring Boot的关系Spring Boot的优点和缺点Spring Boot优点Spring Boot缺点 快速创建Spring Boot项目 IDEA创建SpringBoot工程1.打开IDEA&#xff0c;选择Spring Initlializr2.选择SpringBoot版本和初始化依赖3.更改…