jQuery:获取input中文本的光标位置而不使用浏览器特定的代码?

有没有什么办法在jQuery获得当前光标位置的文本input,而不做丑陋的浏览器特定的代码?

像:

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

光标在“某些文本”的“x”之后,我可以得到“8”?

如果没有一些特定于浏览器的代码,你不能这样做,因为它们实现的文本select范围稍有不同。 但是,有一些插件会将其抽象出来。 正是你所追求的是jQuery插件(jCaret)插件 。

你可以在这里尝试一个演示 。

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

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

你可以在这里testing它 。

关于Jquery Caret插件的警告。

它将与Masked Input插件冲突(反之亦然)。 幸运的是,Masked Input插件包含一个自己的caret()函数,您可以非常类似地使用插入符号来满足您的基本需求 – $(element).caret()。begin或.end

使用语法text_element.selectionStart我们可以根据text_element.value所选文本的第一个字符的索引来获取文本select的开始位置,并且如果我们想要得到与最后一个字符相同的文本我们必须使用text_element.selectionEnd来进行select。

使用它如下:

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

我给你fiddle_demo

只是在浏览时才碰到,可能会帮助你的javascript-getting-and-setting-caret-position-in-textarea 。 你也可以使用它的文本框。