function edittab()
{
var code, sel, tmp, r
var tabs=""
event.returnvalue = false
sel =event.srcelement.document.selection.createrange()
r = event.srcelement.createtextrange()
switch (event.keycode)
{
case (8) :
if (!(sel.getclientrects().length > 1))
{
event.returnvalue = true
return
}
code = sel.text
tmp = sel.duplicate()
tmp.movetopoint(r.getboundingclientrect().left, sel.getclientrects()[0].top)
sel.setendpoint("starttostart", tmp)
sel.text = sel.text.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("starttostart", 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<tmp.text.match(/^[\t]+/g)[0].length; i++) tabs += "\t"
sel.text = "\r\n"+tabs
sel.select()
break
default :
event.returnvalue = true
break
}
}
[ctrl+a 全选 注:如需引入外部js需刷新才能执行]