使用 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 中捕获“光标位置更改”事件的主要内容,如果未能解决你的问题,请参考以下文章

SWFObject 1.5/IE6 JQUERY兼容

jQuery File Upload 图片上传解决方案兼容IE6+

jquery html5 实现placeholder 兼容password ie6

vscode的jquery.+js+插件是哪一个?

jquery不兼容低版本ie浏览器怎么解决办法

基于Jquery UI的autocompelet改写,自动补全控件,增加下拉选项,动态设置样式,点击显示所有选项,并兼容ie6+