为了明天

时光匆匆流逝, 笑看风起云落 - 流浪的狗2006

JS里在光标位置插入字符

<script language=Javascript>
function AddOnPos(obj, charvalue)
{
    
//obj代表要插入字符的输入框
    //value代表要插入的字符
    
    obj.focus();
    
var r = document.selection.createRange();
    
var ctr = obj.createTextRange();
    
var i;
    
var s = obj.value;
    
    
//注释掉的这种方法只能用在单行的输入框input内
    //对多行输入框textarea无效
    //r.setEndPoint("StartToStart", ctr);
    //i = r.text.length;
    //取到光标位置----Start----
    var ivalue = "&^asdjfls2FFFF325%$^&"
    r.text 
= ivalue;
    i 
= obj.value.indexOf(ivalue);
    r.moveStart(
"character"-ivalue.length);
    r.text 
= "";
    
//取到光标位置----End----
    //插入字符
    obj.value = s.substr(0,i) + charvalue + s.substr(i,s.length);
    ctr.collapse(
true);
    ctr.moveStart(
"character", i + charvalue.length);
    ctr.select();
}
</script>

虽然可以实现功能,但是没有完全看明白
希望哪位高人可以给解释一下

posted on 2004-10-14 16:34 流浪的狗 阅读(2764) 评论(4)  编辑 收藏 所属分类: Dotnet C#

评论

#1楼  2004-11-09 22:39 铁匠 [未注册用户]

事实上还有更简单的方法的,你看一下这是以前我弄到的点击一下,就在点击的地方上加字的效果:
document.onclick =function(){
var oSource = window.event.srcElement;
if(oSource.tagName!="DIV")
return false;
var sel = document.selection;
if (sel!=null) {
var rng = sel.createRange();
if (rng!=null)
rng.pasteHTML("<font color=red>插入文字</font>");
}
}
好久没有写这些脚本了,手好生.
  回复  引用    

#2楼  2004-11-29 15:19 ttyp      

function insertAtCaret(textbox,text)
{
textbox.focus();
document.selection.createRange().text = text;
}   回复  引用  查看    

#3楼  2005-01-26 15:00 木头 [未注册用户]

下面是我用DIV做的一个编辑器中光标位置插入图片的示例:
<SCRIPT LANGUAGE="vbscript">
sub InsertImage(oDIVEditor)
dim strImg, txt
strImg = "<img src=""img/btn_ok.gif"">"
oDIVEditor.focus
set txt = oDIVEditor.document.selection.createRange()
txt.pasteHtml strImg
set txt = nothing
End sub
</SCRIPT>   回复  引用    

#4楼  2008-02-19 15:47 fee [未注册用户]

因为插入对象是光标所在的位置,所以textarea是明确的,不用以参数形式传入,最简单的方法:
function AddOnPos(charvalue)
var oText = document.selection.createRange();
oText.text = charvalue;
}   回复  引用    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: