获取 TextArea 中插入符号的 XY 位置
Posted
技术标签:
【中文标题】获取 TextArea 中插入符号的 XY 位置【英文标题】:Get the XY position of the caret in TextArea 【发布时间】:2013-05-08 14:53:33 【问题描述】:我需要在 textArea 中获取插入符号的 XY 位置。
我已经找到了获取 Y 的方法,但我不知道如何获取 X,有人可以帮忙吗?
如果有人想知道,这就是我得到 Y 的方式:
var textBeforeCaret:String = text.substr(0, caretIndex);
var textDump:String = this.text;
this.text = textBeforeCaret;
this.validateNow();
yVariable = this.textHeight;
this.text = textDump;
【问题讨论】:
您是否尝试过 getCharBoundaries() 在插入符号之前和/或之后的字符? help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/… 问题是我需要从文本字段的行尾获取子字符串(不仅仅是当我按 ENTER 时)到我的结尾插入符号,但这有点问题,因为它没有用 \ 标记r ***.com/questions/12627185/… 【参考方案1】:在检查了 RafH 的链接后,我这样做了:
var popUpX:int = 0;
var popUpY:int = 0;
if(text.length > 0)
if(caretIndex > 0)
if(this.textField.getCharBoundaries(caretIndex -1) != null)
popUpX = this.textField.getCharBoundaries(caretIndex - 1).right;
popUpY = this.textField.getCharBoundaries(caretIndex - 1).bottom;
else
popUpX = 0;
var i:int = 2;
while(this.textField.getCharBoundaries(caretIndex - i) == null && caretIndex - i > -1)
i++;
if(caretIndex - i > -1)
popUpY = this.textField.getCharBoundaries(caretIndex - i).bottom + i * 10;
else
popUpY = i * 10;
else
popUpX = this.textField.getCharBoundaries(caretIndex).right;
popUpY = this.textField.getCharBoundaries(caretIndex).bottom;
else
popUpX = 0;
popUpY = 0;
它并不完美,但对我来说已经足够了
【讨论】:
以上是关于获取 TextArea 中插入符号的 XY 位置的主要内容,如果未能解决你的问题,请参考以下文章
jQuery获取textarea光标/插入符号X,Y位置并在下面显示一个DIV
如何使用 JavaScript 查找 INPUT 和 TEXTAREA 插入符号位置坐标?
在 Angular 中的 TextArea 内的当前(或最后一个)插入符号位置插入文本;元素不被解释为 TextArea