在keyUp事件中判断光标位置,然后判断是否在两个符号中间,并且不包含结束符号和开始符号

解决方案 »

  1.   

    我去试一下。要是不可以的话。在问你。我怎么能和你取得联系或者要是很重要的问题实在是解决不了了问你。怎么找到你啊。
      你有MSN吗?
             var rng = event.srcElement.createTextRange(); 
    rng.moveToPoint(event.x,event.y); 
    rng.moveStart("character",-event.srcElement.value.length) 
    insertIndex = rng.text.length;

    用这个方法寻找光标位置我感觉不正确。这个只能判断鼠标单击事件的。
    我在想想。实在不行 在来问你。。
      

  2.   

    hbhbhbhbhb1021(天外水火(我要多努力))。
    这个方法可以实现这个功能但是有点不足就是obj.select();这个方法可以换调吗?
    因为每次用键盘操作光标的时候,它都会把整个文本域的内容全选。
    有没有别的方法。<script language="javascript">
    function up(obj){
        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(event.keyCode==37||event.keyCode==39){
        if(/┡/.test(str1)&&/^┪/.test(str2)){
          document.getElementById("disButton").disabled=true;
        }
       }
    }
    </script>
    <textarea onkeyup="up(this)" name="knowBaseContent" cols="60" rows="10" id="textarea">abc┡defg┪hijks┡as┪ashjj┡jjh┪hggg┡hgh┪hgha</textarea>
    <input type="button" value="引用" onclick="javascript:quote()" id="disButton" />
      

  3.   

    你的代码有些问题,全选的问题可以解决,但是你的按钮考虑的情况少了一些,只有左右是不够的,上下键,pageUp、home等键都可以移动,并且事件也少,粘帖和拖拽事件都要考虑,说实话,这么写觉得很难维护,还是等用户输入完成再做判断格式是否正确吧
    <textarea    id="txt"  name="txt"   onkeyup="show(this)">asdasdasd</textarea>
    <script   language=javascript>
    function show(txb) 

        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(); 
        alert(psn); 
    }   </script>
      

  4.   

    恩。我现在就是试探着做呢。我也是刚接触javascript不怎么太熟悉。我感觉有些东西是触类旁通的。只要一个方向弄明白了。别的也差不多了。
    你说的这些我确实需要添加进去。上 下 左 右。
    我在去好好想一想。谢谢你的帮助和建议。
    感觉你这个人挺好的。
      

  5.   

    //gm()这个方法有问题吗?
     为什么我在文本域拖曳字符串然后按删除键(BackSpace)的时候只删除一个字母。而不是全部删除。
     function gm(obj){    var slct = document.selection; 
        var rng = slct.createRange();
        obj.select();
        rng.setEndPoint("StartToStart", slct.createRange()); 
        var psn = rng.text.length; 
        rng.collapse(false); 
        rng.select(); 
        var str1=obj.value.substring(0,psn)
        var str2=obj.value.substring(psn)
        
        var left = /┡/;
        var right = /┪/;
        var lpost=str2.search(left);
        var rpost=str2.search(right);
         if((rpost>lpost&&lpost==-1)||(rpost<lpost&&rpost !=-1&&lpost!=-1)){  
             delStr(obj);    //调用function delStr(obj)方法。    
         }
    }function delStr(obj){
       if (evevt.key==8){ ... }
       if (event.key==46){ ... }
    }
      

  6.   

    我要回去吃饭了。别人都会去了。晚饭还没有吃那。估计回去还得吃泡面干等也没有人了来帮忙。郁闷。明天 早上 希望有人帮我看看这个程序。
    我也是刚 出来 混的 ,毕业不久。没有弄过javascript,经理让我自己去研究~头疼~。
    不知道有没有那个大虾能帮助小弟了。
      告辞!!!
      

  7.   

    全部删除直接把value设为空就可以了
      

  8.   

    1/ 我想判断光标要是在[]范围内执行删除操作,否则其他操作正常。所以我才在这个方法里调用delStr();
    2/ 不知道这样的直接调用对吗?使用这个show()方法,拖曳的时候不能全部删除(只删除一个字符)。能帮我解决一下吗?(问题关键)
    3/  value值为空,对不起。我有点不理解。
    <script language="javascript">
    function show(obj){
        var slct = document.selection; 
        var rng = slct.createRange();
        obj.select();
        rng.setEndPoint("StartToStart", slct.createRange()); 
        var psn = rng.text.length; 
        rng.collapse(false); 
        rng.select(); 
        alert(psn);
        var str1=obj.value.substring(0,psn)
        var str2=obj.value.substring(psn)
        
        var left = /\[/;
        var right = /]/;
        var lpost=str2.search(left);
        var rpost=str2.search(right);
         if((rpost>lpost&&lpost==-1)||(rpost<lpost&&rpost !=-1&&lpost!=-1)){ //判断光标在要是在[...]里执行下边。 
             alert("开始进入调用delStr()阶段");
     //        delStr(obj);    //要是调另一个方法的话这样写可以吗?     
         }
    }
    </script>
    <textarea onkeydown="show(this)"  name="knowBaseContent" cols="60" rows="10" id="textarea">abc[defg]hijks[as]ashjj[jjh]hggg[hgh]hgha</textarea>
      

  9.   

    obj.select();
    ovj.value="";
    z这样是自动全选拖曳判断值为空。
    要是手动的还得需要楼上那样得判断,所以还必须解决。拖曳得时候只删除一个字符得问题。
      拖曳这个操作这个有方法吗?每尝试过。
    楼上得问题是个关键望朋友帮我解决。谢谢。
      

  10.   

    拖拽一般人都不会去用这个,不如把他禁掉就OK了
    <input name="haha" ondragenter="return false">
      

  11.   

    这个方法确实好得方法。我考虑一下。呵呵。但是这个问题你还是帮我考虑一下好吗?
    谢谢。
    我就这个问题解决后,这个模块就完事情了。应该完事了~~
    1/ 我想判断光标要是在[]范围内执行删除操作,否则其他操作正常。所以我才在这个方法里调用delStr();
    2/ 不知道这样的直接调用对吗?使用这个show()方法,拖曳的时候不能全部删除(只删除一个字符)。能帮我解决一下吗?(问题关键)
    3/  value值为空,对不起。我有点不理解。
    <script language="javascript">
    function show(obj){
        var slct = document.selection; 
        var rng = slct.createRange();
        obj.select();
        rng.setEndPoint("StartToStart", slct.createRange()); 
        var psn = rng.text.length; 
        rng.collapse(false); 
        rng.select(); 
        alert(psn);
        var str1=obj.value.substring(0,psn)
        var str2=obj.value.substring(psn)
        
        var left = /\[/;
        var right = /]/;
        var lpost=str2.search(left);
        var rpost=str2.search(right);
         if((rpost>lpost&&lpost==-1)||(rpost<lpost&&rpost !=-1&&lpost!=-1)){ //判断光标在要是在[...]里执行下边。 
             alert("开始进入调用delStr()阶段");
     //        delStr(obj);    //要是调另一个方法的话这样写可以吗?     
         }
    }
    </script>
    <textarea onkeydown="show(this)"  name="knowBaseContent" cols="60" rows="10" id="textarea">abc[defg]hijks[as]ashjj[jjh]hggg[hgh]hgha</textarea>