页面上有一个<textarea>,让用户输入信息并以'tab'将多个信息隔开,然后在php代码中用explode("\t", $message)获得数组。
但是tab键会切换,每次在textarea中按tab键时,焦点就被切换到下一个输入框了。怎样取消tab键的切换功能?谢谢啦~~
但是tab键会切换,每次在textarea中按tab键时,焦点就被切换到下一个输入框了。怎样取消tab键的切换功能?谢谢啦~~
调试欢乐多
<script type="text/javascript" defer="defer">
document.getElementById("textBox").onkeydown = function(ev) {
if (!ev){
ev = window.event;
}
if (ev.keyCode == 9){
return false;
}
}
</script>
我是想让他不切换,但是还是可以打上去的,因为之后的php代码里还需要用\t来解析这个字符串呢
主要是兼容性问题。
提示:获取选定文本对象(注意没有选定文本时也有效)并进行操作 比如追加制表符(在没有选定文本时给选定域追加文本可以理解为在文本焦点插入文字)。
{ 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
}
}
http://topic.csdn.net/t/20051205/11/4438258.html