如何从输入字段中获取插入位置?
我通过谷歌发现了一些零碎的东西,但没有任何防弹措施.
基本上像jQuery插件这样的东西是理想的,所以我可以简单地做
$("#myinput").caretPosition()
Run Code Online (Sandbox Code Playgroud) 如何在<textarea>使用JavaScript中获得插入位置?
例如: This is| a text
这应该回来了7.
如何让它返回光标/选择周围的字符串?
例如:'This is', '', ' a text'.
如果突出显示"是"一词,那么它将返回'This ', 'is', ' a text'.
如何使用jQuery在textarea中获得插入符号的位置?我正在寻找光标从文本开头的偏移,而不是(x,y)位置.
我需要文本选择开头的像素坐标(页面上的任何位置,而不是textarea).
我尝试使用光标坐标,但这不能很好地工作,因为光标坐标和选择的开始并不总是相同(例如当用户拖动文本时).
我希望有人有解决方案!
我正在使用jQuery并试图找到一种跨浏览器的方式来获取插入符号<textarea>和input盒子中的插入符号,这样我就可以在这个位置放置一个绝对定位的div.
有一些jQuery插件吗?或者JavaScript代码片段就是这么做的?
TL; DR - 使用非常轻巧和强大的textarea-caret-position 组件库,现在也支持<input ype="text">它.演示http://jsfiddle.net/dandv/aFPA7/
有没有办法知道插入符号在HTML文本字段中的位置?
<input type='text' />
Run Code Online (Sandbox Code Playgroud)
我想根据插入符的位置以像素(并重新定位)div的位置.
注意:我不想知道字符或字符中的位置
<textarea>.我想知道<input>元素中的像素位置.
IE允许我在输入元素中创建一个文本范围,我可以在其上调用getBoundingClientRect()并获取某个字符或光标/插入符号的像素位置.有没有办法在其他浏览器中以像素为单位获取某个角色的位置?
var input = $("#myInput")[0];
var pixelPosition = null;
if (input.createTextRange)
{
var range = input.createTextRange();
range.moveStart("character", 6);
pixelPosition = range.getBoundingClientRect();
}
else
{
// Is there any way to create a range on an input's value?
}
Run Code Online (Sandbox Code Playgroud)
我正在使用jQuery,但我怀疑它能否解决我的问题.我期待一个纯JavaScript解决方案,如果有的话,但欢迎jQuery的答案.
给定一个没有固定宽度字体的textarea,我想知道如果插入符号(由给出的element.selectionEnd)位于文本的第一行或最后一行中的键.

为了避免坏的答案,这里有一些解决方案,不工作:
\n:一个句子可以分为两行,因为它对于textarea的宽度来说太长了.这是测试的小提琴并消除一些歧义(是的,它是一个textarea元素,它不仅仅是一行等):http://jsbin.com/qifezupu/4/edit
笔记:
我需要获取节点的文本(或整个内部html),在contenteditable设置为的元素中截断当前插入符号(文本光标)位置true.我已经尝试过使用range.setStart()等,但我无法做出正面和反面的...
编辑:为了澄清,在某些事件中,我希望脚本从当前具有焦点的节点的开头提取文本到插入符号的位置(如果可编辑字段具有焦点,则当前闪烁的垂直线)并将其存储在变量中.动作类似于用户按下ctrl + shift + home和ctrl + c时会发生的情况
示例:给出html:
<span contenteditable=true>Hello, world<br> Good bye, World</span>
Run Code Online (Sandbox Code Playgroud)
假设插入符号在"好"和"再见"之间,我想要检索
"Hello, world<br> Good"
我正在寻找一种方法来获取插入符号中的插入符号xy坐标,类似于如何使用window.event获取鼠标坐标,因为我需要打开一个弹出窗口,确切地说是用户使用插入符号的位置在满足的div中.我怎样才能做到这一点?非常感谢!