获取textarea文本框所选字符光标位置索引,以及选中的文本值;textarea高度自适应,随着内容增加高度增加;获取输入框中的光标位置...

获取textarea文本框所选字符光标位置索引,以及选中的文本值

         $.fn.selection = function () {
                    var s, e, range, stored_range;
                    if (this[0].selectionStart == undefined) {
                        var selection = document.selection;
                        if (this[0].tagName.toLowerCase() != "textarea") {
                            var val = this.val();
                            range = selection.createRange().duplicate();
                            range.moveEnd("character", val.length);
                            s = (range.text == "" ? val.length : val.lastIndexOf(range.text));
                            range = selection.createRange().duplicate();
                            range.moveStart("character", -val.length);
                            e = range.text.length;
                        } else {
                            range = selection.createRange(),
                                stored_range = range.duplicate();
                            stored_range.moveToElementText(this[0]);
                            stored_range.setEndPoint('EndToEnd', range);
                            s = stored_range.text.length - range.text.length;
                            e = s + range.text.length;
                        }
                    } else {
                        s = this[0].selectionStart,
                            e = this[0].selectionEnd;
                    }
                    var te = this[0].value.substring(s, e);
                    return {start: s, end: e, text: te};
                };

textarea高度自适应,随着内容增加高度增加

                $.fn.autoHeight = function(){
                    return this.each(function(){
                        var $this = jQuery(this);
                        if( !$this.attr('_initAdjustHeight') ){
                            $this.attr('_initAdjustHeight', $this.outerHeight());
                        }
                        _adjustH(this).on('input', function(){
                            _adjustH(this);
                        });
                    });
                    /**
                     * 重置高度
                     * @param {Object} elem
                     */
                    function _adjustH(elem){
                        var $obj = jQuery(elem);
                        return $obj.css({height: $obj.attr('_initAdjustHeight'), 'overflow-y': 'hidden'})
                            .height( elem.scrollHeight );
                    }

                };

获取输入框中的光标位置

                $.fn.getCursorPosition = function () {
                    var el = $(this).get(0);
                    var pos = 0;
                    if ('selectionStart' in el) {
                        pos = el.selectionStart;
                    } else if ('selection' in document) {
                        el.focus();
                        var Sel = document.selection.createRange();
                        var SelLength = document.selection.createRange().text.length;
                        Sel.moveStart('character', -el.value.length);
                        pos = Sel.text.length - SelLength;
                    }
                    return pos;
                };

 
jQuery设置光标停留位置在文本最后(或在具体的位置)的办法

如何让div 或 p 标签可编辑里面的内容:添加 contenteditable="true" 即可

contenteditable="true" 的P标签如何获取到光标之前的内容,先获取光标的索引,再获取所有内容

 //获取new-content的光标位置
    function getNewContentPosition($text){
        var selection = window.getSelection();
        var index = selection.focusOffset;//有换行时,只能获取到那一行的光标索引
        var data = selection.focusNode.data;//光标那一行的数据
        var allData = $text.val();
        return allData.indexOf(data.toUpperCase()) + index;
    }
//获取new-content的所有内容
    function getNewContent($newContent) {
        return $newContent.html().replace(/<div>/g,'\n').replace(/<\/div>/g,'').toUpperCase();
    }

 判断鼠标有没有中值:

var txt = window.getSelection?window.getSelection():document.selection.createRange().text;
if(txt == ''){console.log('没有选中值')}

 判断是否按了ctr

var isCtrlKey = e.ctrlKey;
var isCommandKey = e.metaKey;//苹果mac 的ctr键是 command

 

转载于:https://www.cnblogs.com/pfcan66/p/10814732.html

Vue3实战:自定义组合键实现智能换行与光标定位 本文详细解析了在Vue3项目中实现自定义组合键(如Shift+Enter)进行智能换行与光标精准定位的完整方案。针对聊天室等场景中Enter键发送消息与换行需求冲突的核心痛点,文章从键盘事件监听、文本分割重组、利用nextTick进行光标定位等核心原理入手,提供了手把手的代码实战与可复用的Composable函数封装,并分享了跨平台兼容性、性能优化等进阶避坑指南。 阅读详情

相关推荐

嵌入式GUI开发实战:emWin文本与数显示API深度解析与应用

在嵌入式系统开发中,图形用户界面(GUI)是实现人机交互的核心组件,其底层原理依赖于高效的图形渲染与显示驱动。文本与数显示作为GUI的基础功能,直接影响用户体验与系统性能。通过理解字体渲染、内存管理及显示缓冲机制,开发者能够优化界面响应速度并减少资源占用。在嵌入式GUI领域,emWin库以其轻量级和高效率著称,广泛应用于各类微控制器(MCU)项目。其提供的文本与数显示API,如GUI_DispString和GUI_DispDec系列函数,支持多种显示模式、对齐方式及动态数据刷新,适用于工业控制、智能家居

weixin_33747129的博客 357

jQuery获取设置textarea光标位置

jQuery扩展函数,用于获取设置textarea光标位置

Unity编辑器扩展:EditorGUILayout核心布局与性能优化实战

在Unity开发中,编辑器扩展是提升工作流效率的关键技术,而GUI布局系统是其核心组成部分。自动布局引擎通过流式排列机制动态计算控件位置,相比绝对布局更易于创建可伸缩、易维护的界面。掌握布局原理不仅能解决控件错位、滚动卡顿等常见问题,更能构建符合直觉的生产力工具。在工程实践中,通过模块化设计、PropertyDrawer封装和响应式布局策略,可以显著提升编辑器界面的专业度和复用性。针对性能优化,需重点关注OnGUI调用频率、ScrollView虚拟化及GUIContent对象重用,这些技巧在处理复杂配置面板

weixin_34111790的博客 394

vue 获取input光标位置,并实现插入模板语法。

点击上面的模板说明,可以在输入框光标位置插入相应的语法。 <el-form-item label="模板说明:" v-if="form.news_type==='1'"> <el-row class="templateCode"> <el-col :span="8"> <di...

吴小花的博客 4990

js获取textarea中的

获取textarea中的

Ny992的博客 6526

vue input获取光标位置,并追加内容

vue input获取光标位置,并追加内容,项目中需要实现在输入框内的任意位置,追加内容

m0_49623851的博客 6951

如何获取 textarea光标位置

在做一个 textarea 的工具,需要获取光标位置再进行其它操作。

学习笔记 1852

javascript获取textarea光标选择位置内容方法(IE, Firefox)

TESTbody,td{    font-family: verdana, arial, helvetica, sans-serif;    font-size: 12px;}    var start=0;    var end=0;    function add(){                var textBox = document.getElementById("ta");   

lee576的专栏 1017

qml保姆级教程三:输入组件

qml输入组件,当行输入框TextInput,文本TextArea,进度条ProgressBar

weixin_73548574的博客 1242

Unity UGUI位图艺术字体实战:从原理到实现风格化UI文字

在游戏UI开发中,字体渲染是影响视觉风格的关键环节。动态字体和SDF字体虽然灵活高效,但在需要高度定制化、像素级精确控制或独特艺术表现时存在局限。位图字体技术通过预渲染字符集为纹理图集,将每个字符映射到固定UV坐标,实现了对字体外观的完全掌控。这项技术的核心价在于能够无缝融入像素艺术、手绘风格等特定美术需求,确保UI元素与游戏整体视觉语言的高度统一。从实现原理看,它本质上是将文本渲染转化为对纹理图集的网格切片操作,通过自定义UGUI组件动态生成顶点和UV数据。在Unity UGUI框架下,开发者可以通过实

weixin_34221276的博客 340

Vue3+Vite构建自定义虚拟键盘:实现中英文输入与拼音输入法

虚拟键盘作为前端交互的核心组件,其原理在于通过JavaScript动态模拟物理键盘的输入行为,实现与输入框的无缝对接。这项技术的关键价在于能够完全掌控输入体验的样式、布局和功能逻辑,尤其适用于信息查询终端、自助服务机等需要高度定制化或全屏运行的特定场景。在实现层面,开发者需要处理键盘布局管理、状态响应、事件分发以及与输入法的深度集成。本文聚焦于使用Vue3的组合式API进行响应式状态管理,并集成拼音输入法功能,详细阐述了从核心架构设计到拼音-汉字映射、候选词处理等关键模块的实现路径,为构建高定制化、支持复

weixin_33849215的博客 355

Unity中基于DOTween与TextMeshPro实现高性能打字机效果

在Unity UI开发中,动画系统与性能优化是提升用户体验的核心技术。通过补间动画原理,开发者可以高效、平滑地驱动UI元素的属性变化,从而创建流畅的视觉反馈。DOTween作为一款强大的动画插件,以其声明式的编程模型和卓越的性能,成为实现复杂UI动画的首选方案。结合TextMeshPro这一官方推荐的文本渲染解决方案,开发者能够构建出渲染质量高、控制粒度细的交互组件。本文聚焦于一个典型的应用场景——游戏对话与叙事系统中的打字机效果,详细阐述了如何利用DOTween驱动TextMeshPro的maxVisib

weixin_33924312的博客 569

前端学习笔记——HTML基础语言的学习

HTML基础语言的学习笔记

cACKL的博客 927

QML 基础组件专栏目录(V1)

本专栏是一个 QML (Qt Quick) 演示工程合集,包括了基础组件、动画、布局、图表、粒子系统等各个方面。每个示例的代码量都很小(通常 50~200 行),专注于演示一个知识点。没有复杂的项目结构干扰,适合从布局 & 基础示例开始,按分类逐步深入。

u011186532的专栏 676

Unity WebGL输入难题终极解决方案:从焦点管理到移动端适配

在WebGL应用开发中,输入事件处理是构建交互体验的核心基础。其原理在于浏览器通过DOM事件机制捕获用户操作,再通过JavaScript与渲染引擎通信。这一机制的技术价在于实现了跨平台的用户交互能力,但Unity WebGL的默认实现常面临输入焦点丢失、移动端适配困难等挑战,直接影响游戏和应用的用户体验。针对这些痛点,开发者需要从底层事件监听、状态同步到高层API设计进行全面优化,特别是在处理虚拟键盘呼出、触摸延迟和输入法兼容性等场景时。本文介绍的解决方案通过重构Unity与浏览器间的通信桥梁,提供了稳定

329

AI教练如何跨越人机沟通鸿沟:从意图理解到界面锚定的实战解析

在智能体(Agent)与自动化系统开发中,如何让AI准确理解用户意图并执行操作,是提升人机协作效率的核心挑战。这涉及到自然语言处理、多模态感知与情境理解等多个技术领域。其关键在于实现有效的“接地”(Grounding)——将抽象指令锚定到具体的界面元素和系统状态,从而弥合意图与指代鸿沟。从技术价看,这不仅提升了智能助手的实用性,更为企业培训、复杂软件教学及下一代人机交互提供了工程化解决方案。本文以构建“DigitalCoach”为例,深入探讨了如何通过多模态感知、任务状态追踪及分层反馈机制,解决AI代理在

weixin_34314962的博客 458

jQuery UI五大核心组件实战:draggable、sortable、datepicker等深度解析

jQuery UI作为经典前端UI库,其 draggable、sortable、datepicker 等组件虽诞生于框架早期,却深刻封装了DOM交互的本质协议——包括拖拽坐标归一化、排序数据一致性、时区敏感的日期解析、动态内容加载与模态框焦点囚笼。这些能力直指现代前端开发中仍普遍存在的兼容性、可访问性与跨浏览器稳定性问题。理解其原理,不仅有助于维护海量存量中后台系统(尤其政务、金融类IE11兼容场景),更能反哺对Vue/React中v-model、useDraggable等抽象层的底层认知。本文聚焦真实项目

a6t2007的博客 499

Kimi K2.6 Agent建站实测:从需求到可访问网页的闭环

网页开发正从手写代码迈向意图驱动的智能协作范式。其核心原理在于AI Agent通过任务编排(REACT循环)、沙箱化工具链(如browser_simulator DOM模拟器、code_interpreter)与状态记忆机制,实现需求理解→代码生成→实时渲染验证→自动迭代的闭环。这种能力显著提升前端工程效率,尤其适用于MVP快速验证、客户提案原型和一人团队建站场景。相比WordPress拖拽或Next.js全栈开发,Kimi K2.6以零环境配置、纯网页端操作,将单页官网构建压缩至30分钟级,同时保障语义化

weixin_34289454的博客 440

如何获取光标textarea 中的位置

这里的位置不是指光标所在的字符位置,而是相对 textarea 的向上向左的大体像素位置。你可以通过来获取光标textarea 文本中的字符位置,比如在第几个字符上。

学习笔记 1831
上一篇: js 如何计算当年清明节日期
下一篇: js 如何访问跨域的iframe的元素
ayfxo22204
博客等级 码龄12年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值