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

问题描述 投票:28回答:4

这个问题在这里已有答案:

有没有什么方法可以在jQuery中获取文本输入中的当前光标位置,而无需使用丑陋的浏览器特定代码?

像:

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

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

jquery input cursor-position
4个回答
33
投票

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

要获得该职位的代码,您可以执行以下操作:

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

You can test it here


15
投票

关于Jquery Caret插件的警告。

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


14
投票

使用语法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


7
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.