请问如何在<textarea>的当前光标处插入数据? 本帖最后由 mp3aaa 于 2009-11-19 18:07:24 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/xiaofan_sap/archive/2009/11/17/4819423.aspx 我在网上找了一个 <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下 刚写了一个,看看是楼主要求的吧<!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> var isFocus = false ;上面这句忘了删除啦,~~~ 但是在FF下不可以哎 只能在IE下 插入 这样就可以了,代码有点乱哦,呵呵<!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> 有趣的待解难题:一个按钮同时能完成两个动作吗? IE6下div中用iframe空白的原因 window.open()里面的参数对应的对象是什么? 图片怎么具有按钮的属性 top.focus()这句话是作什么的? 用按钮可以在同一框架内从一个页面打开一个新的网面吗? 请问有何方法隐藏在文字输入框中的光标或者令它不闪烁显示呢? 请帮我看下面的代码!! 关于window.close()的问题,请大家帮帮忙.谢谢! javascript中是否可以加入ASP呢??? javascript的事件机制不明白,请高人指点。 aspx中的内容如何付给javascirpt控件?
<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下
<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>
上面这句忘了删除啦,~~~
只能在IE下 插入
<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>