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

ops/2025/3/5 10:07:13/

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

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

<template><div><div><b>需求:</b> <br> 文本可插入模板文字;<br>同时在“%虚拟机名称%”后一个%删除,会将“%虚拟机名称%”选中删除</b></div><el-button type="primary" @click="setDesc(tmpTxt)">告警文案</el-button><el-inputtype="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.ppmy.cn/ops/15630.html

相关文章

FinalShell 安装 及使用教程

一 简介&#xff1a; FinalShell 是一款免费的国产的集 SSH 工具、服务器管理、远程桌面加速的良心软件&#xff0c;同时支持 Windows,macOS,Linux&#xff0c;它不单单是一个 SSH 工具&#xff0c;完整的说法应该叫一体化的的服务器&#xff0c;网络管理软件&#xff0c;在很…

深度学习中的黑科技:自监督学习(Self-Supervised Learning)

在人工智能领域&#xff0c;深度学习已成为推动技术革新的核心力量。然而&#xff0c;深度学习的一个重要瓶颈是对大量标记数据的依赖性。在这个背景下&#xff0c;自监督学习(Self-Supervised Learning, SSL)作为一种新兴的学习范式&#xff0c;越来越受到研究者的关注。自监督…

Pandas 2.2 中文官方教程和指南(九·二)

比较类似数组的对象 当将 pandas 数据结构与标量值进行比较时&#xff0c;您可以方便地执行逐元素比较&#xff1a; In [65]: pd.Series(["foo", "bar", "baz"]) "foo" Out[65]: 0 True 1 False 2 False dtype: boolIn …

【Xilinx】时序约束学习 TIMING-1: 时钟修改块上的时钟波形无效

在 <cell_type> 输出 <pin_name> 上指定的时钟 <clock_name> 的时钟波形无效&#xff0c; 与时钟修改块 (CMB) 设置不匹配。该时钟波形为 <VALUE>。期望的波形为 <VALUE>。 描述 Vivado Design Suite 会根据 CMB 设置和传入主时钟的特性&#xf…

ArrayList

一.简介 在集合框架中&#xff0c;ArrayList是一个普通的类&#xff0c;实现了List接口&#xff0c;具体框架如下 说明&#xff1a; 1.ArrayList是以泛型方式实现的&#xff0c;使用时必须先实例化 2.ArrayList实现了RandomAccess接口&#xff0c;表明ArrayList支持随机访问…

在windows系统中安装kafka配置全步骤记录

在windows系统中安装kafka配置全步骤记录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可…

ETLCloud中多并行分支运行的设计技巧

在大数据处理领域&#xff0c;ETL&#xff08;Extract, Transform, Load&#xff09;流程是至关重要的一环&#xff0c;它涉及数据的提取、转换和加载&#xff0c;以确保数据的质量和可用性。而在ETL流程中&#xff0c;多并行分支的运行设计是一项关键技巧&#xff0c;可以有效…

碎碎笔记01

1. 多元线性回归 通过现有数据&#xff0c;总结出数据所对应的线性方程的斜率与截距 f ( x 1 , x 2 , . . . , x n ) w 1 x 1 w 2 x 2 . . . w n x n b f(x_1, x_2, ..., x_n) w_1x_1 w_2x_2 ... w_nx_n b f(x1​,x2​,...,xn​)w1​x1​w2​x2​...wn​xn​b w&a…