jQuery:在没有浏览器特定代码的情况下获取文本的光标位置?

时间:2010-11-03 08:43:44

标签: jquery input cursor-position

jQuery中是否有任何方法可以在文本输入中获取当前光标位置而不会使用丑陋的浏览器特定代码?

喜欢在:

<input id="myTextInput" type="text" value="some text" >

光标位于“some text”的“x”之后,我可以得到“8”?

4 个答案:

答案 0 :(得分:33)

如果没有某些浏览器特定代码,则无法执行此操作,因为它们实现的文本选择范围略有不同。但是,有一些插件可以将其抽象出来。对于你正在追求的东西,有jQuery Caret (jCaret) plugin

为了获得这个职位的代码,你可以这样做:

$("#myTextInput").bind("keydown keypress mousemove", function() {
  alert("Current position: " + $(this).caret().start);
});

You can test it here

答案 1 :(得分:15)

关于Jquery Caret插件的警告。

它会与Masked Input plugin发生冲突(反之亦然)。幸运的是,Masked Input插件包含一个自己的caret()函数,你可以使用非常类似于Caret插件的基本需求 - $(element).caret()。begin或.end

答案 2 :(得分:13)

使用语法text_element.selectionStart,我们可以根据text_element.value中所选文本的第一个字符的索引获取文本选择的起始位置,以防我们想要获取与选择中的最后一个字符相同,我们必须使用text_element.selectionEnd

按如下方式使用:

<input type=text id=t1 value=abcd>
<button onclick="alert(document.getElementById('t1').selectionStart)">check position</button>

我正在给你fiddle_demo

答案 3 :(得分:7)

在浏览时遇到过,可能会帮助您 javascript-getting-and-setting-caret-position-in-textarea 。您也可以将它用于文本框。