<div id="del" onmousedown="del()">asas[asas]asas[asas]asas[asas]asas[asas]</div>
<SCRIPT LANGUAGE="JavaScript">
<!--
var s = "asas[asas]asas[asas]asas[asas]asas[asas]";
function del(){
var startindex = s.lastIndexOf("[");
var endindex = s.lastIndexOf("]");
if(parseInt(startindex) > 0){
var ss = s.substring(0,startindex);
if(s.length-1 > parseInt(endindex)){
ss = s.substring(0,startindex) + s.substring(endindex+1,s.length);
}
document.getElementById("del").innerHTML = ss;
s = ss;
}
}
//-->
</SCRIPT>

解决方案 »

  1.   

    要是 我 把光标移动到 “asas[as§as] 在按删除也能把[as§as]删掉吗?其中§是光标的意思。
      

  2.   

    <input    id="txt"  name="txt"   value="asas[asas]asas[asa]" onkeydown="show(this)"> 
    <script language=javascript>
    function show(obj) 

    if(event.keyCode==8)
    {
        var slct = document.selection; 
        var rng = slct.createRange();
        obj.select(); 
        rng.setEndPoint("StartToStart", slct.createRange()); 
        var index = rng.text.length;
        var str1=obj.value.substring(0,index)
        var str2=obj.value.substring(index)
        re=/\[([^\]]*?)$/
        re2=/^[^\[]*?]/
        if(re.test(str1))
        {
         if(re2.test(str2))
         {
         obj.value=str1.replace(re,"")+str2.replace(re2,"")
         }
         else
         {
         obj.value=str1.replace(/.$/,"")+str2
         }
        }
        else
        {
         if(/]$/.test(str1))
         {
         obj.value=str1.replace(/\[(.*?)\]$/,"")+str2
         }
         else
         {
         obj.value=str1.replace(/.$/,"")+str2
         }
        }
        event.returnValue=false 
        }
    } </script>
      

  3.   

    谢谢你“hbhbhbhbhb1021(天外水火(我要多努力)) ”
    你的程序和我想的一样。
    但是中间有点问题。就是我要是从中间删除“【...】”可以一个一个删除。
    但是你的程序要是从最后开始删除的话就会把带“【...】”内容会全部删除。
    不是本意思。能改正一下吗?就是光标要是从最后开始删除也是一组一组删除而不是删除一组后全部没了。谢谢了。~~
      

  4.   

    <input    id="txt"  name="txt"   value="asas[asas]asas[asa]" onkeydown="show(this)"> 
    <script language=javascript>
    function show(obj) 

    if(event.keyCode==8)
    {
        var slct = document.selection; 
        var rng = slct.createRange();
        obj.select(); 
        rng.setEndPoint("StartToStart", slct.createRange()); 
        var index = rng.text.length;
        var str1=obj.value.substring(0,index)
        var str2=obj.value.substring(index)
        if(str2=="")
        {
         obj.value=obj.value.replace(/.$/,"")
         event.returnValue=false
         return
        }
        re=/\[([^\]]*?)$/
        re2=/^[^\[]*?]/
        if(re.test(str1))
        {
         if(re2.test(str2))
         {
         obj.value=str1.replace(re,"")+str2.replace(re2,"")
         }
         else
         {
         obj.value=str1.replace(/.$/,"")+str2
         }
        }
        else
        {
         if(/]$/.test(str1))
         {
         obj.value=str1.replace(/\[(.*?)\]$/,"")+str2
         }
         else
         {
         obj.value=str1.replace(/.$/,"")+str2
         }
        }
        event.returnValue=false 
        }
    } </script>
      

  5.   

    在次谢谢你“hbhbhbhbhb1021(天外水火(我要多努力)) ”
    很感谢你为我思考程序,提供思路。很高兴能交你这个朋友我的QQ:55287996
    MSN:[email protected]你加那个都行。但是我上网的时间有限,白天周末可以随便。
    你的第二程序。测试了,虽然还存在问题 。但是我真的很感谢你。能帮助我这么多 已经可以了。
    第二个程序:
     1>12[31]2[31]23删除后边的中括号的不能完全删去,删的时候一个字符一个字符的删除违背原来的意思。
    2>每次删晚[...]字符串的时候光标失去。焦点而没有停在字符串的后边。
       我是刚学习javascript 感觉挺好的语言。很高兴能得到你的帮助谢谢你。希望我们能成为朋友。。
      

  6.   

    <input    id="txt"  name="txt"   value="12[31]2[31]23" onkeydown="show(this)"> 
    <script language=javascript>
    function show(obj) 

    if(event.keyCode==8)
    {
        var slct = document.selection; 
        var rng = slct.createRange();
        obj.select(); 
        rng.setEndPoint("StartToStart", slct.createRange()); 
        var index = rng.text.length;
        var str1=obj.value.substring(0,index)
        var str2=obj.value.substring(index)
        if(str2=="")
        {
        obj.value=obj.value.replace(/.$/,"")
        }else
        {
        re=/\[([^\]]*?)$/
        re2=/^[^\[]*?]/
        if(re.test(str1))
        {
         if(re2.test(str2))
        {
         str1=str1.replace(re,"")
         obj.value=str1+str2.replace(re2,"")
        }
        else
        {
         str1=str1.replace(/.$/,"")
         obj.value=str1+str2
        }
        }
        else
        {
        if(/]$/.test(str1))
        {
         str1=str1.replace(/\[[^\]]*?\]$/,"")
         obj.value=str1+str2
        }
        else
        {
         str1=str1.replace(/.$/,"")
         obj.value=str1+str2
        }
        }
        }
        var nextRng=obj.createTextRange();
        nextRng.move("character",str1.length)
        nextRng.select()
        event.returnValue=false 
      }
    } </script>
      

  7.   

    还需要确定光标。因为删除的时候不是点击有可能移动键盘的左右键来控制光标删除。
     hbhbhbhbhb1021(天外水火(我要多努力)) :你好
    你这个程序大体没有问题了。但还是有个小小的bug。
    就是当光标移动到 字符串“12[31]2[31]23”(鼠标移动到字符串末尾)后面开始删除的时候,程序就没有执行删除符号“[...]”。
    麻烦你在试一下好吗?谢谢。
    这个程序是我作项目中的一个模块。
      

  8.   

    <input    id="txt"  name="txt"   value="12[31]2[31]23" onkeydown="show(this)"> 
    <script language=javascript>
    function show(obj) 

    if(event.keyCode==8)
    {
        var slct = document.selection; 
        var rng = slct.createRange();
        obj.select(); 
        rng.setEndPoint("StartToStart", slct.createRange()); 
        var index = rng.text.length;
        var str1=obj.value.substring(0,index)
        var str2=obj.value.substring(index)
        if(str2=="")
        {
         if(/\]$/.test(str1))
         {
         obj.value=obj.value.replace(/\[[^\]]*?\]$/,"")
        }
        else
        {
         obj.value=obj.value.replace(/.$/,"")
        }
        }else
        {
        re=/\[([^\]]*?)$/
        re2=/^[^\[]*?]/
        if(re.test(str1))
        {
         if(re2.test(str2))
        {
         str1=str1.replace(re,"")
         obj.value=str1+str2.replace(re2,"")
        }
        else
        {
         str1=str1.replace(/.$/,"")
         obj.value=str1+str2
        }
        }
        else
        {
        if(/]$/.test(str1))
        {
         str1=str1.replace(/\[[^\]]*?\]$/,"")
         obj.value=str1+str2
        }
        else
        {
         str1=str1.replace(/.$/,"")
         obj.value=str1+str2
        }
        }
        }
        var nextRng=obj.createTextRange();
        nextRng.move("character",str1.length)
        nextRng.select()
        event.returnValue=false 
      }
    } </script>
      

  9.   

    这个已经可以实现我的功能了。谢谢你。
    但是我要是在添加一个功能就是按del键也同样有这样的效果。
    是在if(event.keyCode==8||event.keyCode=??)判断的时候加一个del的keycode就可以吗?
    因为del是删除后边的。需要在考虑吗?给我一下思路就行。
    不想在麻烦你了。已经很麻烦你了。再次 谢谢你。
    你能把你的网上常用的联系方式告诉我吗?我想和你成个朋友。
      

  10.   

    hbhbhbhbhb1021(天外水火(我要多努力)) 我试了,event.keyCode=46(del)删除的时候出现了bug,
    (del)删除是删除光标后面的。在代码中(event.keyCode==8||event.keyCode=46)加上之后它的删除操作和backspace删除的效果一样了。
    可以再给我点线索吗?