日期:2014-05-18  浏览次数:20382 次

JS如何从textbox中间插入内容
如题,在一个textbox中有如下文字
"JS如何从textbox中_间插入内容"

按一个Button可以在textbox里插入 其他文字
如何可以控制文字插入在光标所在处?
比如说我按button插入文字 “测试”
如何让测试插入到红色的位置?

------解决方案--------------------
利用js对字符串进行处理,用正则表达式来进行替换即可;
------解决方案--------------------
查找该_然后替换文字.
------解决方案--------------------
你是不是说要插在之前的光标处?

这个没法做,至少俺不会做,在你点击鼠标时,textbox已经失去焦点了,所以也没光标位置,没法定位...
------解决方案--------------------
form程序里可以。web里面没做过
------解决方案--------------------
如果要插到特定的位置,你只能是先把text1.value取到,然后判断那个位置插入。
http://blog.csdn.net/greatverve/archive/2008/12/18/3546949.aspx
------解决方案--------------------
无法判断光标所在位置
------解决方案--------------------
用字符串查找判断"_"
------解决方案--------------------
應該不可以吧!無法判斷光標所處位置
但希望高手能夠降臨。
------解决方案--------------------

JScript code

InputControl = new Object();
InputControl.InsertText = function(text,autoview)//autoview 是否自动滚动视图
    {
        this.focus(); 
        var range = document.selection.createRange();
        range.text = text;
        autoview = autoview ==null ? false : true;
        range.scrollIntoView(autoview);
    }

//如
InputControl.InsertText.call(yourcontrol,"我要替换",true)

------解决方案--------------------
这是我现在这个项目实现的。
function InputValue(val,num)
{
var txt=document.getElementById("txtComment");
getPos(txt,true,val,num);
}
function BackSpace()
{
var txb=document.getElementById("txtComment");
getPos(txb,false,'',0);
}
//得到光标的位置并实现输入或删除
function getPos(txb,type,val,num)
{
txb.focus();
var slct = document.selection;
var rng = slct.createRange();
txb.select();
rng.setEndPoint("StartToStart", slct.createRange());
var psn = rng.text.length;
rng.collapse(false);
rng.select();

if(type)
{//输入
txb.value=txb.value.substr(0,psn)+val+txb.value.substr(psn,txb.value.length-psn);
setPos(txb,psn+num);
}
else
{//后退
txb.value=txb.value.substr(0,psn-1)+txb.value.substr(psn,txb.value.length-psn);
setPos(txb,psn-1);
}
}
//输入或删除完毕,光标相应移动
function setPos(e,num)
{
var r =e.createTextRange();
r.moveStart('character',num);
r.collapse(true);
r.select();
}