如何获得鼠标指针在textarea框中的位置

javaready 2011-10-13 12:10:36
想制作类似新浪微博和腾讯微博的那种效果

在输入框中输入一段文字后,将鼠标指针移动到某个文字之后点击表情插入按钮在该位置插入表情

但是需要获得鼠标指针在textarea中的索引值

请教如何获得鼠标指针在textarea框中的位置

谢谢
...全文
569 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fiream 2011-10-15
  • 打赏
  • 举报
回复
查过了。IE8,9.没问题
javaready 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dd0607 的回复:]

把在框框内的光标位置记录下来 插入表情的时候先判断是否有这个记录
[/Quote]

对判断光标位置的代码不是很了解

能用代码表示一下么
木头是猫 2011-10-14
  • 打赏
  • 举报
回复
把在框框内的光标位置记录下来 插入表情的时候先判断是否有这个记录
javaready 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dd0607 的回复:]

用IETester模拟的IE5.5/6/7/8 均正常
[/Quote]

ie中当在页面其他地方点一下,再点击button就把aa插入到textarea框最前面了

我用的是 ie9
木头是猫 2011-10-14
  • 打赏
  • 举报
回复
用IETester模拟的IE5.5/6/7/8 均正常
木头是猫 2011-10-14
  • 打赏
  • 举报
回复
IE哪个版本 我刚测了 IE8可以用
javaready 2011-10-14
  • 打赏
  • 举报
回复
自己顶一个,求高手指教
javaready 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 theforever 的回复:]

IE中现象正常,要防止因此而无法连续多重操作的话,可以在其它对象的点击事件中保存一下document.getElementById("TEXTAREA对象的ID").selectionStart,它就是当前TEXTAREA中的光标位置。然后每次操作时引用这个变量进行截取拼接就可以了。
[/Quote]

不行的,查了下,ie不支持selectionStart
  • 打赏
  • 举报
回复
关键是要注意不同的操作行为导致的位置自然变化,根据你的实际情况处理一下就行。
  • 打赏
  • 举报
回复
IE中现象正常,要防止因此而无法连续多重操作的话,可以在其它对象的点击事件中保存一下document.getElementById("TEXTAREA对象的ID").selectionStart,它就是当前TEXTAREA中的光标位置。然后每次操作时引用这个变量进行截取拼接就可以了。
javaready 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxl888 的回复:]

你要鼠标指针在输入框中的位置有什么用呢?如果是输入框,你获得当前的光标值不就行了吗
[/Quote]

获得了鼠标在输入框的位置,然后在这个位置插入所需的文字啊

什么是光标值

怎么获得
晨晨 2011-10-13
  • 打赏
  • 举报
回复
你要鼠标指针在输入框中的位置有什么用呢?如果是输入框,你获得当前的光标值不就行了吗
javaready 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qq83705563 的回复:]

HTML code


<html>
<head>

<script type="text/javascript">
function InsertText(obj,charvalue)
{
obj.focus();
var leng=obj.value.length;

if(typeof docume……
[/Quote]

这个代码在其他浏览器,结果都能实现所需效果,但在ie下

当在页面其他地方点一下后再点击button,内容就插在输入框的最前面了,并没有插入到之前鼠标在输入框中的位置

不知道怎么解决
qq83705563 2011-10-13
  • 打赏
  • 举报
回复


<html>
<head>

<script type="text/javascript">
function InsertText(obj,charvalue)
{
obj.focus();
var leng=obj.value.length;

if(typeof document.selection !="undefined") //ie
{
var r =document.selection.createRange();
r.text = charvalue;
}
else //firefox
{
obj.value=obj.value.substr(0,obj.selectionStart)+ charvalue +obj.value.substring(obj.selectionStart,leng);
}
}

</script>

</head>
<body>

<input type="button" value="按钮" onclick="InsertText(x,'aa')" /><br />
<textarea id="x" rows="4" cols="50">
光标位置插入字符光标位置插入字符光标位置插入字符光标位置插入字符光标位置插入字符
</textarea>

</body>
</html>



87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧