【问题标题】:Catching "cursor place change" events inside textareas with jQuery (IE6-compatible)使用 jQuery(兼容 IE6)在 textareas 中捕获“光标位置更改”事件
【发布时间】:2011-08-15 12:23:04
【问题描述】:

如何使用 jQuery 捕捉 textarea 内的“光标位置更改”事件(也应该在 IE6 中工作)?

示例 1

之前 :text |

之后: te|

示例2

之前 :text |

之后:文本 tex|t2

示例 3

之前 :text |

之后:|


编辑

在捕捉到光标事件后-还需要检查光标是否改变了他的位置(IE6也必须工作)

编辑2

如果你的解决方案不能在 IE6 中运行,但在 IE7+webkit 中,请写出来

【问题讨论】:

    标签: jquery jquery-events cursor-position


    【解决方案1】:

    基本上有三个事件可以导致光标改变位置,

    1. 击键

    2. 鼠标点击

    3. 粘贴、选择、聚焦等编程事件...

      无论您试图通过“光标位置更改”完成什么,我都会捕获这些事件

    已添加代码示例:

    $("#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 事件似乎涵盖了对插入符号位置的所有更改。

    【讨论】:

    • 不包括箭头键
    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多