这个问题在这里已有答案:
有没有什么方法可以在jQuery中获取文本输入中的当前光标位置,而无需使用丑陋的浏览器特定代码?
像:
<input id="myTextInput" type="text" value="some text" >
光标在“某些文本”的“x”之后,我可以得到“8”?
如果没有特定于浏览器的代码,则无法执行此操作,因为它们实现的文本选择范围略有不同。但是,有一些插件可以将其抽象出来。对于你正在追求的东西,有jQuery Caret (jCaret) plugin。
要获得该职位的代码,您可以执行以下操作:
$("#myTextInput").bind("keydown keypress mousemove", function() {
alert("Current position: " + $(this).caret().start);
});
关于Jquery Caret插件的警告。
它将与Masked Input plugin冲突(反之亦然)。幸运的是,Masked Input插件包含一个自己的caret()函数,你可以使用非常类似于Caret插件的基本需求 - $(element).caret()。begin或.end
使用语法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
只是在浏览时遇到,可能会帮助你javascript-getting-and-setting-caret-position-in-textarea
。您也可以将它用于文本框。