2012-05-04 49 views
4

我正在制作基于Web的代码编辑器,并使用textarea进行文本编辑。我想将选项卡支持添加到textarea,以便按下选项卡不会使元素不重点。 我有这样的定义textarea的:HTML文本区域选项卡支持

<textarea id="codeEdit_txt" rows="50" cols="80" onkeydown="return codeEdit_keyDown(event);">

,并定义为功能codeEdit_keyDown:

function codeEdit_keyDown(e) { 
    if (e.keyCode == 9) { 
     return false; 
    } 
} 

这可防止标签按键从散焦textarea的,虽然它不将制表符留在后面。当我试图让这个工作开始时,我注意到如果我定义了如下的函数,它会在光标位置放置一个制表符。

function codeEdit_keyDown(e) { 
    if (e.keyCode == 9) { 
     alert(""); 
     return false; 
    } 
} 

我的两个问题是:

  1. 为什么添加警报原因的选项卡添加?
  2. 有没有办法在光标上添加标签,而不必找到光标 的位置,在texarea中分割文本并手动添加标签 字符(并且不必每次用户按下标签时都有警报)?

感谢

编辑:这似乎只在Chrome的工作,而不是在IE,Safari或Firefox

+0

我只是试过这个链接,它似乎在Chrome中工作,而不是IE,Firefox或Safari浏览器。是否可能是Chrome中的错误? –

回答

2

看到这个问题:

https://stackoverflow.com/a/13130/420001

您正在寻找.preventDefault();

编辑: A fiddle

编辑2:更好fiddle,感谢rainecc

+0

我发现这个问题,而我正在寻找答案,并preventDefault工作不失去焦点,但它没有添加制表符。有没有添加制表符的方法? –

+0

@AndyMetcalfe:应该这样做,看看我的编辑。 – Josh

+1

我修改了Josh的小提琴来添加一个制表符 - 对我来说非常合适。 Kosh Josh。 http://jsfiddle.net/rainecc/n6aRj/1/ – rainecc