vue2监测光标位置并手动定位到某个位置

news/2024/4/29 3:24:26/文章来源:https://blog.csdn.net/godread_cn/article/details/137120117

vue2中开发评论模块时,在评论文本输入完成后,往往需要在文本某处插入表情或其他内容,但在打开表情列表选了表情之后,textarea失去焦点后往往无法在刚才鼠标定位处插入表情,因此需要解决以下两个需求:

1、选好表情后,执行插入动作时,需要定位好刚才光标移动到或鼠标 focus 点到的位置。

2、textarea 必须在重新聚焦时自动聚焦到定位好的位置。

这里需要对 textarea 进行监测,要对键盘移动光标和鼠标点击两个动作进行光标位置监测。

1、用 @input="getCursorPos" @focus="getCursorPos" 监测移动光标

2、用 @mousedown="getCursorPos" @mouseup="getCursorPos" 监测鼠标点击

在插入表情之前,监测光标位置后,还需要判定光标的位置,通过 textarea 获取 selectionStart 和 selectionEnd 的值得到光标的起始、结束位置,再通过调用 setSelectionRange 方法将光标的位置标注出来,实现定位。

// 添加 emoji
addEmoji (code) {const obj = this.$refs.commentInput;// 在光标位置插入 emojiconst startPos = obj.selectionStart; // 光标起始位置const endPos = obj.selectionEnd; // 光标结束位置// 截取内容并插入 emojithis.commentText = this.commentText ? this.commentText.substring(0, startPos) + code + this.commentText.substring(endPos, this.commentText.length) : code;obj.focus(); // 自动聚焦// setSelectionRange 必须在 nextTick 中才有效this.$nextTick(() => {obj.setSelectionRange(endPos, endPos);// 将光标位置手动定位到刚刚添加 emoji 的后面this.cursorPos += 2;obj.setSelectionRange(this.cursorPos, this.cursorPos);})
},

最后在定位之后,将光标向插入表情的后一位移动,以实现连续插入的效果。

下面实现光标位置的监测

// 监测光标位置
getCursorPos () {// 检测光标的位置let commentInput = this.$refs.commentInput;if (commentInput) {this.cursorPos = commentInput.selectionStart;}
},

注意,这里使用的是 selectionStart,只能实现选择文本时对光标的监测,但我们可以将选择文本的起始和结束位置设置在同一个定位数值上,则相当于使用了选择文本功能,但却什么都没选,间接实现了定位到具体某个位置的功能。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux nginx配置ssl, 实现https+ip访问

mkdir sslZhengShu openssl req -newkey rsa:2048 -nodes -keyout ca.key -out ca.csr openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr 和之前输入一样即可 …

Python基本运算

1.逻辑运算符 第四行会有黄色的下划线是因为这个不是系统推荐的写法,系统推荐的是第五行的链式比较; 2.短路求值 对于and而言,左边的语句是false,那么整体一定是false,右边的表达式就不会进行计算; 对于or而言&…

FTP 文件传输服务

FTP连接 控制连接:TCP 21,用于发送FTP命令信息 数据连接:TCP 20,用于上传、下载数据 数据连接的建立类型: 主动模式:服务端从 20 端口主动向客户端发起连接 被动模式:服务端在指定范围…

平台介绍-搭建赛事运营平台(3)

上文介绍了品牌隔离的基本原理,就是通过不同的前端和微服务来实现。但是确实很多功能是类似的,所以从编程角度还是有些管理手段的。 前端部分:前端部分没有什么特别手段,就是两个独立的项目工程,分别维护。相同的部分复…

神策数据参与制定首份 SDK 网络安全国家标准

国家市场监督管理总局、国家标准化管理委员会发布中华人民共和国国家标准公告(2023 年第 13 号),全国信息安全标准化技术委员会归口的 3 项国家标准正式发布。其中,首份 SDK 国家标准《信息安全技术 移动互联网应用程序&#xff0…

2核4G服务器租用价格表,阿里云/腾讯云/华为云/京东云

当前最新2核4G云服务器多少钱?165元一年,30元3个月。阿里云2核4G服务器165元一年,30元3个月、腾讯云2核4G5M服务器165元一年、京东云2核4G云主机126元1年,华为云也提供2核4G配置云服务器。阿腾云atengyun.com整理2024年最新云服务…

【NLP笔记】预训练+Prompt Tuning新范式之LLM时代(GPT3...)

文章目录 概述GPT3 【参考链接】 一张图总结大语言模型的技术分类、现状和开源情况 大语言模型LLM微调技术:Prompt Tuning A Survey of Large Language ModelsThe Practical Guides for Large Language ModelsGPT3:Language Models are Few-Shot Learner…

行存储与列存储:大数据存储方案的选择与优缺点分析

随着大数据时代的来临,数据的规模和复杂性呈指数级增长,传统的关系数据库已经不再适应这一巨大的存储量和计算要求。在大数据存储领域,行存储和列存储成为两种备受关注的存储方案。本文将探讨行存储和列存储的定义、优缺点,并结合…

python pytz是什么

pytz模块常用于时区的转换,常常配合datetime一起使用。我们知道datetime除了data方法生成的时间是没有时区概念,其他如time、datetime等都是有时区概念,即指定了tzinfo信息。 >>> import datetime >>> datetime.datetime.n…

骗子查询系统源码

源码简介 小权云黑管理系统 V1.0 功能如下: 1.添加骗子,查询骗子 2.可添加团队后台方便审核用 3.在线反馈留言系统 4.前台提交骗子,后台需要审核才能过 5.后台使用光年UI界面 6.新增导航列表,可给网站添加导航友链 7.可添加云黑类…

C语言运算符和表达式——增1和减1运算符

目录 增1和减1运算符 一元运算符 前缀增1/减1运算符 后缀增1/减1运算符 前缀与后缀对变量和表达式的影响 稍微复杂一点的例子 增1和减1运算符的优缺点 增1和减1运算符 增1运算符(Increment) *使变量的值增加1个单位 减1运算符(Decre…

量化交易软件开发定制的步骤

量化交易软件的定制开发是一个复杂而精细的过程,需要经过一系列步骤来确保最终交付的软件符合客户的需求并具有高度的可靠性和效率。以下是量化交易软件开发定制的主要步骤: 1. 需求分析与规划 在开始开发之前,首先需要与客户深入沟通&…

【使用matlab绘制音频数据的时域图和频域图】

使用matlab绘制音频数据的时域图和频域图 虚拟的数据集见附件 一、读取数据并设置参数 close all;clear all;colordef black 设置参数 filedir D:\Projects\MATLAB\data name 2024-03-28.txt % disp(filedir);Fs 8192; %采样率,即单位时间的样本个数&#xff…

电脑如何更新AMD独立显卡驱动?安装官方驱动的方法来了!

前言 有小伙伴在电脑上安装了独立显卡之后,总会用驱动人生或者驱动精灵等软件给独立显卡安装驱动。这种安装方法并不能说是错的,反正能用就行。 安装官方驱动的办法其实很简单,现在独立显卡一共就那么几家,最常见的显卡就是Nvidi…

Java基于微信小程序的校园订餐小程序的实现,附源码和数据库

博主介绍:✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 3月29日,星期五

每天一分钟,知晓天下事! 2024年3月29日 星期五 农历二月二十 1、 网络表演(直播与短视频)运营团体标准发布:应建立举报处置机制。 2、 商务部:中国决定终止对澳大利亚进口葡萄酒征收反倾销税和反补贴税。…

八大技术趋势案例(虚拟现实增强现实)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

android中控件和基本事件的响应

1.概述 在Android中,在处理UI中的各种元素的时候,两个程序中的要点为: 得到布局文件(XML)中的控件句柄 设置控件的行为 本篇文章将介绍在 Android 中几种基本的程序控制方法,要获得的效果是通过 2 个按钮来…

吴恩达机器学习:实践实验室-应用机器学习的建议(Advice for Applying )

在这个实验室中,您将探索评估和改进机器学习模型的技术。 文章目录 1 - Packages2-评估学习算法(多项式回归)2.1拆分数据集2.1.1图列、测试集 2.2模型评估的误差计算,线性回归2.3比较训练和测试数据的表现 3-偏差和方差3.1绘图列…

鸿蒙OpenHarmony技术:【设备互信认证】

简介 在OpenHarmony中,设备互信认证模块作为安全子系统的子模块,负责设备间可信关系的建立、维护、使用、撤销等全生命周期的管理,实现可信设备间的互信认证和安全会话密钥协商,是搭载OpenHarmony的设备进行可信互联的基础平台能…