https://github.com/brighthas/textarea-indenthtml5

解决方案 »

  1.   


        function indent(tx){ tx.addEventListener("keydown",function(event){
    if(event.keyCode === 13){
    event.preventDefault();
    insert("\r\n");
    } if(event.keyCode === 9){
    event.preventDefault();
    insert("    ");
    }

    });  function insert(v){
    var txt = tx.value;
    var point = tx.selectionEnd;

    var s = "",e = "",c = "",hh=false;

    var sn = txt.lastIndexOf('\n',point-1);
    if(sn === -1){
    hh = true;
    }
    var x1 = txt.substring(sn,txt.length);
         var rxx = /^\s*/gi
    c = x1.match(rxx)[0];
    s = txt.substring(0,point);
    e = txt.substring(point,txt.length);

    if(hh){
    txt = s  + c + v + e;
    }else
    txt = s  +c+ e;

    tx.value = txt;
    if(hh){
    tx.setSelectionRange(point+c.length+1,point+c.length+1)
    }else{
    tx.setSelectionRange(point+c.length,point+c.length)
    }
      
      }
    }
      

  2.   

    这个估计不好处理 ,因为在换行的时候 你怎么判断它到底是要比上一行 缩进 两个字符 ,还是跟当前行一样 不需要缩进。提供的思路就是 按键盘的 enter键时 判断当前行 数据满足一定条件  然后在下一行进行缩进