请问如何在

mp3aaa 2009-11-19 06:06:25
一个按钮
当我单击它的时候 在<textarea id="t1">的当前光标处 插入一行数据 "aaa"

比如说 像csdn这个论坛发帖的时候 文章内容的部分 我点击粗体字的时候 他会在光标处插入【b】【/b】



请问如何用JS才实现 在光标处插入数据
...全文
162 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangchunxi88 2009-11-20
  • 打赏
  • 举报
回复
学习一下...
mp3aaa 2009-11-20
  • 打赏
  • 举报
回复
但是在FF下不可以哎
只能在IE下 插入
cntmi 2009-11-20
  • 打赏
  • 举报
回复
这样就可以了,代码有点乱哦,呵呵

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<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>
</HEAD>

<BODY>

<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')">


</BODY>
</HTML>


tomdoglz 2009-11-20
  • 打赏
  • 举报
回复
留名
学习了
cntmi 2009-11-19
  • 打赏
  • 举报
回复
var isFocus = false ;
上面这句忘了删除啦,~~~
cntmi 2009-11-19
  • 打赏
  • 举报
回复
刚写了一个,看看是楼主要求的吧

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script language="javascript">

var clone ;
var isFocus = false ;
function getFocus(obj){
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(str){
if(clone == null) return ;
document.getElementById("aa").value = getBefore() + str + getLast() ;
clone = null ;
}
</script>
</HEAD>

<BODY>

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


</BODY>
</HTML>

mp3aaa 2009-11-19
  • 打赏
  • 举报
回复
我在网上找了一个
<FORM>
<TEXTAREA NAME="a" ONSELECT="this.pos=document.selection.createRange();" onCLICK="this.pos=document.selection.createRange();" onKEYUP="this.pos=document.selection.createRange();">1234567</TEXTAREA>
<INPUT TYPE="button" VALUE="插!" onCLICK="try{this.form.a.pos.text='插!';}catch(e){}">
</FORM>


这个代码只能 在IE下成功运行 没法再FF下
mp3aaa 2009-11-19
  • 打赏
  • 举报
回复
你的代码没看懂。。。。。
xiaofan_sap 2009-11-19
  • 打赏
  • 举报
回复
http://blog.csdn.net/xiaofan_sap/archive/2009/11/17/4819423.aspx

87,994

社区成员

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

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