<TEXTAREA NAME="ice" id='ice' ROWS="5" COLS="50" onkeydown='testTab()'></TEXTAREA>
<SCRIPT LANGUAGE="JavaScript">
<!--
function testTab()
{
if (event.shiftKey && event.keyCode == 9)
{
ice.value = ice.value.replace(/^(.*)\t$/g,"$1");
event.returnValue = false;
return;
}
if (event.keyCode == 9)
{
ice.value += '\t';
event.returnValue = false;
}
}
//-->
</SCRIPT>

解决方案 »

  1.   

    to ice_berg16(寻梦的稻草人) 这个不行啊。
      

  2.   

    上面的是制表了,用空格来代替吧!
    <TEXTAREA NAME="ice" id='ice' ROWS="5" COLS="50" onkeydown='testTab()'></TEXTAREA>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function testTab()
    {
    if (event.shiftKey && event.keyCode == 9)
    {
    ice.value = ice.value.replace(/^(.*)\u0020{4}$/,"$1");
    event.returnValue = false;
    return;
    }
    if (event.keyCode == 9)
    {
    ice.value += "\u0020\u0020\u0020\u0020";
    event.returnValue = false;
    }
    }
    //-->
    </SCRIPT>
      

  3.   

    to ice_berg16(寻梦的稻草人) 还是不行。
    一般编辑器按tab键可是后退文字的,比如editplus,interdev,dw等等。
      

  4.   

    我知道了,这个肯定行了!
    <TEXTAREA NAME="ice" id='ice' ROWS="5" COLS="50" onkeydown='testTab()'></TEXTAREA>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function testTab()
    {
    var sel  = document.selection.createRange();
    if (event.shiftKey && event.keyCode == 9)
    {
    sel.move("character",-4);
    sel.select();
    event.returnValue = false;
    return;
    }
    if (event.keyCode == 9)
    {
    sel.text = "\u0020\u0020\u0020\u0020";
    //sel.move("character",4);
    sel.select();
    event.returnValue = false;
    }
    }
    //-->
    </SCRIPT>
      

  5.   

    哦,厉害,那再帮我把shift+ tab的效果写出来吧,200分,明早结。
    这个功能很酷!
    3Q!
      

  6.   

    改进了,但是按tab后的文本并没有保持选中状态。 <TEXTAREA NAME="ice" id='ice' ROWS="5" COLS="50" onkeydown='testTab()'></TEXTAREA>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function testTab()
    {
    var sel  = document.selection.createRange();
    var mytext= sel.text;
    var i,j,k;
    if (event.shiftKey && event.keyCode == 9)
    {
    arr=mytext.split(String.fromCharCode(13,10))
    mytext=""
     
    for(k=0;k<arr.length;k++)
    {
     
     for (j=1; j<=4;j++)
     {
     if(arr[k].substr(0,1)=="\u0020")
    {
    arr[k]=arr[k].slice(1)
    }
     }

    mytext += arr[k]  + ((k==(arr.length-1))? "" : String.fromCharCode(13,10));
    }
    sel.text = mytext;
    sel.select();
     event.returnValue = false;
     return;
    }
    if (event.keyCode == 9)
    {
    arr=mytext.split(String.fromCharCode(13,10))
    mytext=""
    for(j=0;j<arr.length;j++)
    {
     
    mytext += "\u0020\u0020\u0020\u0020" + arr[j]  + ((j==(arr.length-1))? "" : String.fromCharCode(13,10));
    }
    sel.text = mytext;
     sel.select();
     event.returnValue = false;
    }
    }
    //-->
    </SCRIPT>
      

  7.   

    靠,好复杂,终于弄完了,以后做成htc<TEXTAREA NAME="ice" id='ice' ROWS="50" COLS="100" onkeydown='testTab()'></TEXTAREA>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function testTab()
    {
    var sel  = document.selection.createRange();
    var mytext= sel.text;
    var i,j,k;
    if (event.shiftKey && event.keyCode == 9)
    {
    arr=mytext.split(String.fromCharCode(13,10))
    mytext=""
     
    for(k=0;k<arr.length;k++)
    {
     
     for (j=1; j<=4;j++)
     {
     if(arr[k].substr(0,1)=="\u0020")
    {
    arr[k]=arr[k].slice(1)
    }
     }

    mytext += arr[k]  + ((k==(arr.length-1))? "" : String.fromCharCode(13,10));
    }
    with(sel){
    sel.text = mytext;
    collapse(true)
    moveEnd("character",0)
    moveStart("character",(mytext.length -2) * -1)
    select()
    }
     
     window.event.cancelBubble = true;  
     event.returnValue = false;
      return;
    }
    if (event.keyCode == 9)
    {
    arr=mytext.split(String.fromCharCode(13,10))
    mytext=""
    for(j=0;j<arr.length;j++)
    {
     
    mytext += "\u0020\u0020\u0020\u0020" + arr[j]  + ((j==(arr.length-1))? "" : String.fromCharCode(13,10));
    }

     
    with(sel){
    sel.text = mytext;
    collapse(true)
    moveEnd("character",0)
    moveStart("character",(mytext.length -2) * -1)
    select()
    }
     
     window.event.cancelBubble = true;  
     event.returnValue = false;
      return;
    }
    }
    //-->
    </SCRIPT>
      

  8.   

    靠,终于弄完了,不太理想
    <TEXTAREA NAME="ice" id='ice' ROWS="50" COLS="100" onkeydown='testTab()'></TEXTAREA>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function testTab()
    {
    var sel  = document.selection.createRange();
    var mytext= sel.text;
    var i,j,k;
    if (event.shiftKey && event.keyCode == 9)
    {
    arr=mytext.split(String.fromCharCode(13,10))
    mytext=""
     
    for(k=0;k<arr.length;k++)
    {
     
     for (j=1; j<=4;j++)
     {
     if(arr[k].substr(0,1)=="\u0020")
    {
    arr[k]=arr[k].slice(1)
    }
     }

    mytext += arr[k]  + ((k==(arr.length-1))? "" : String.fromCharCode(13,10));
    }
    with(sel){
    sel.text = mytext;
    collapse(true)
    moveEnd("character",0)
    moveStart("character",(mytext.length ) * -1)
    select()
    }
     
     window.event.cancelBubble = true;  
     event.returnValue = false;
      return;
    }
    if (event.keyCode == 9)
    {
    arr=mytext.split(String.fromCharCode(13,10))
    mytext=""
    for(j=0;j<arr.length;j++)
    {
     
    mytext += "\u0020\u0020\u0020\u0020" + arr[j]  + ((j==(arr.length-1))? "" : String.fromCharCode(13,10));
    }

     
    with(sel){
    sel.text = mytext;
    collapse(true)
    moveEnd("character",0)
    moveStart("character",(mytext.length ) * -1)
    select()
    }
     
     window.event.cancelBubble = true;  
     event.returnValue = false;
      return;
    }
    }
    //-->
    </SCRIPT>
      

  9.   

    又改进了点。<TEXTAREA NAME="ice" id='ice' ROWS="50" COLS="100" onkeydown='testTab()'></TEXTAREA>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function testTab()
    {
    var sel  = document.selection.createRange();
    var mytext= sel.text;
    var i,j,k;
    if (event.shiftKey && event.keyCode == 9)
    {
    arr=mytext.split(String.fromCharCode(13,10))
    mytext=""
     
    for(k=0;k<arr.length;k++)
    {
     
     for (j=1; j<=4;j++)
     {
     if(arr[k].substr(0,1)=="\u0020")
    {
    arr[k]=arr[k].slice(1)
    }
     }

    mytext += arr[k]  + ((k==(arr.length-1))? "" : String.fromCharCode(13,10));
    }
    with(sel){
    sel.text = mytext;
    collapse(true)
    moveEnd("character",0)
    moveStart("character",(mytext.length ) * -1)
    select()
    }
     
     window.event.cancelBubble = true;  
     event.returnValue = false;
      return;
    }
    if (event.keyCode == 9)
    {
    arr=mytext.split(String.fromCharCode(13,10))
    mytext=""
    for(j=0;j<arr.length;j++)
    {
     
    mytext += "\u0020\u0020\u0020\u0020" + arr[j]  + ((j==(arr.length-1))? "" : String.fromCharCode(13,10));
    }

     
    with(sel){
    sel.text = mytext;
    collapse(true)
    moveEnd("character",0)
    moveStart("character",(mytext.length -4) * -1)
    select()
    }
     
     window.event.cancelBubble = true;  
     event.returnValue = false;
      return;
    }
    }
    //-->
    </SCRIPT>