<script> function Edittab () {var code, SEL, TMP, R var tabs= "" Event.returnvalue = False SE L =event.srcelement.document.selection.createrange () R = event.srcElement.createTextRange () switch (Event.keyco DE) {case (8): if (!) ( Sel.getclientrects (). length > 1)) {Event.returnvalue = True return The code = Sel.text tmp = sel.duplicate () tmp.movetopoint (R.getboundingclien Trect (). Left, Sel.getclientrects () [0].top) Sel.setendpoint ("Starttostart", tmp) Sel.text = sel.t Ext.replace (/^\T/GM, "") code = code.replace (/^\T/GM, ""). Replace (/\r\n/g, "\ r") R.findtext (code ) R.select () break case (9): if (sel.getclientrects (). length > 1) {code = Sel.text tmp = sel.duplicate () Tmp.movetopoint (R.getboundingclientrect (). Left, Sel.getclientrects () [0].top) Sel.setendpoint ("s Tarttostart ", tmp" Sel.text = "T" +sel.text.replace (/\r\n/g, "\r\t") code = Code.replace (/\r\n/g, "\r\t") R.findtext (Code) R.select ()} else {sel.text = "\ T" Sel.select ()} break case (13) : tmp = Sel.duplicate () tmp.movetopoint (R.getboundingclientrect (). Left, sel.getclientrects () [ 0].top) tmp.setendpoint ("Endtoend", sel) for (var i=0; Tmp.text.match (/^[\t]+/g) && I&L T;tmp.text.match (/^[\t]+/g) [0].length; i++) Tabs + = "\ T" Sel.text = "\ r \ n" +tabs sel.select () Break default : Event.returnvalue = True Break}} </script> <textarea rows= "onkeydown=" Edittab () "Name=" Filetext "cols=" ></textarea>
[Ctrl + A All SELECT Note: If the need to introduce external JS need to refresh to perform]