请问如何在textarea的光标处插入字符?

2012-09-17 05:56:40
在网上翻了N久,找了一堆代码,没一个管用的……而且那些代码基本看不懂,JS完全废柴的。
唯一一个有点效果的,测试的时候OK,但是用到我的程序里就挂了...以下代码就是那个有效果的。

<script language="javascript">

var clone ;

function getFocus(obj){
if(document.all){

var sel=document.selection.createRange();

clone = sel.duplicate();
//设置头位置(头等于obj的TextRange的头,尾等于obj的TextRange的尾)
clone.moveToElementText(obj);

clone.setEndPoint('EndToEnd', sel);//设置尾位置,些时的clone不能由
//return clone.text.length ;//光标前文本的长度
}


}
function getBefore() //得到光标前的文本
{
return clone.text

}
function getLast() //得到光标后的文本
{
var m=clone.text.length;//当前光标所在位置
clone.moveStart('character',m);//移动开始点,-m标示当前光标位置前面m个字符处
clone.moveEnd('character',aa.value.length);//移动结束点,0标示当前光标位置
clone.select();//选中开始点到结束点间的字符
return document.selection.createRange().text ;

}

function insert(id,str){
if(document.all){
alert(clone == null) ;
if(clone == null) return ;
document.getElementById("aa").value = getBefore() + str + getLast() ;
clone = null ;
alert(clone == null) ;
}else{
var obj = document.getElementById(id) ;
var scrollTop = obj.scrollTop; // 滚动的位置
var start = obj.selectionStart; // 当前光标所在位置

var pre = obj.value.substr(0, obj.selectionStart); // 光标之前的内容
var next = obj.value.substr(obj.selectionEnd); // 光标之后的内容

document.getElementById("aa").value = pre + str + next ;
}

}
</script>
<textarea id="aa" type=text onfocus="getFocus(this)" rows=10 cols=50>
场研究公司comScore最新发布的数据显示,微软在美国搜索市场的份额已接近10%,而雅虎搜索的份额逐月下降。谷歌搜索份额继续增长。
</textarea>
<br>
<input type="button" value="插入【ADD】" onclick="insert('aa','ADD')">


我程序现有的代码:

<script>
funtion clickAction(obj){
var id = "<%=tboxCF.ClientID %>"; // 多行文本框的ID
var btn = document.getElementById(id); // 多行文本框
var str = obj.innerHTML.replace(/[ ]/g, "");// 要插入的字符
// 接下来要获取光标在多行文本框中的位置,然后将str放入光标所在的位置去。
// 除了这个,还有下拉列表的,也是要获取光标位置,然后将下拉列表选中的值插入光标所在的位置。
}
</script>
<asp:TextBox runat="server" ID="tboxCF" TextMode="MultiLine" Rows="10" Columns="30"></asp:TextBox>
<div onclick="clickAction(this)">+</div>
<div onclick="clickAction(this)">-</div>
<div onclick="clickAction(this)">*</div>
<div onclick="clickAction(this)">/</div>
...全文
84 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

87,914

社区成员

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

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