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
。 你也可以使用它的文本框。