|
|
文本框(Textarea)是比较常用的文本输入控件,经常在论坛和留言簿中使用。但是,一般的文本框不能直接输入TAB(一个空位),通常需要从别的地方复制过来。下面,小狗给大家送来一个可以直接输入TAB的文本框效果。
TAB键的缩排处理 <script>
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(/^ /gm, "")
code = code.replace(/^ /gm, "").replace(/
/g, "
")
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 = " "+sel.text.replace(/
/g, "
")
code = code.replace(/
/g, "
")
r.findText(code)
r.select()
}
else
{
sel.text = " "
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(/^[ ]+/g) && i<tmp.text.match(/^[ ]+/g)[0].length; i++) tabs += " "
sel.text = "
"+tabs
sel.select()
break
default :
event.returnValue = true
break
}
}
</script>
<textarea cols=75 rows=20 onkeydown="editTab()">
<script>
alert("ok")
</script></textarea>
数据挖掘论坛 [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
|