使用 jQuery(兼容 IE6)在 textareas 中捕获“光标位置更改”事件
Posted
技术标签:
【中文标题】使用 jQuery(兼容 IE6)在 textareas 中捕获“光标位置更改”事件【英文标题】:Catching "cursor place change" events inside textareas with jQuery (IE6-compatible) 【发布时间】:2011-08-15 12:23:04 【问题描述】:如何使用 jQuery 捕捉 textarea 内的“光标位置更改”事件(也应该在 IE6 中工作)?
示例 1:
之前 :text |
之后: te|
示例2:
之前 :text |
之后:文本 tex|t2
示例 3:
之前 :text |
之后:|
编辑:
在捕捉到光标事件后-还需要检查光标是否改变了他的位置(IE6也必须工作)
编辑2:
如果你的解决方案不能在 IE6 中运行,但在 IE7+webkit 中,请写出来
【问题讨论】:
【参考方案1】:基本上有三个事件可以导致光标改变位置,
击键
鼠标点击
粘贴、选择、聚焦等编程事件...
无论您试图通过“光标位置更改”完成什么,我都会捕获这些事件
已添加代码示例:
$("#myTextInput").bind("keydown click focus", function()
alert("Current position: " + $(this).caret().start);
);
Thanks to @Nick Craver
【讨论】:
谢谢, 1. 如何在事件捕获后检测光标位置? 2. 可以插入到 $('textarea').bind('all event') 但它创建 CPU 问题 - 它应该插入以仅绑定需要的事件 谢谢,1.它没有捕捉到“鼠标删除”新光标位置2.插件重2299字节 @Yosef:请解释一下#1?鼠标不删除。您可能希望将上下文菜单操作(删除)添加到您正在捕获的事件列表中。至于#2,如果您在缩小版中获得最新版本的jquery(1.5.2),则为83k。 (您想针对完整版本进行调试/开发,然后切换到最小化进行部署。2.3 k 怎么“太重”了? 好的,我的意思是在 #1 中,用户可以使用键盘或 textarea 内的鼠标字符删除 - 并且光标会改变他的位置。如果用户通过键盘删除,你会抓住它,但用鼠标你不会抓住使用“keydown 点击焦点”。 @Yosef,根据您的描述,“鼠标删除”应该被捕获为 keydown 事件或 keyup。 (光标位置可能会因keydown和keyup之间的删除而改变)。【参考方案2】:我发现 select 事件似乎涵盖了对插入符号位置的所有更改。
【讨论】:
不包括箭头键以上是关于使用 jQuery(兼容 IE6)在 textareas 中捕获“光标位置更改”事件的主要内容,如果未能解决你的问题,请参考以下文章
jQuery File Upload 图片上传解决方案兼容IE6+
jquery html5 实现placeholder 兼容password ie6
基于Jquery UI的autocompelet改写,自动补全控件,增加下拉选项,动态设置样式,点击显示所有选项,并兼容ie6+