页面上有一个<textarea>,让用户输入信息并以'tab'将多个信息隔开,然后在php代码中用explode("\t", $message)获得数组。
但是tab键会切换,每次在textarea中按tab键时,焦点就被切换到下一个输入框了。怎样取消tab键的切换功能?谢谢啦~~

解决方案 »

  1.   

    <textarea id="textBox"></textarea>
    <script type="text/javascript" defer="defer">
        document.getElementById("textBox").onkeydown = function(ev)   {
            if (!ev){
                ev = window.event;
            }
            if (ev.keyCode == 9){
                return false;
            }
        }
    </script>
      

  2.   

    谢谢楼上,但是你这样是把tab键禁止了,在这个textarea里面就不能打tab键了
    我是想让他不切换,但是还是可以打上去的,因为之后的php代码里还需要用\t来解析这个字符串呢
      

  3.   

    看Csdn文本编辑栏的 B(粗体) 怎么实现的你就知道了。
    主要是兼容性问题。 
    提示:获取选定文本对象(注意没有选定文本时也有效)并进行操作 比如追加制表符(在没有选定文本时给选定域追加文本可以理解为在文本焦点插入文字)。
      

  4.   

    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
    }
    }
      

  5.   

    看看这个帖子的讨论吧
    http://topic.csdn.net/t/20051205/11/4438258.html