我正在制作一个基于 Web 的代码编辑器,并且正在使用 textarea 进行文本编辑。我想向 textarea 添加选项卡支持,以便按下选项卡不会使元素失去焦点。我有这样定义的textarea:
<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;
}
}
这可以防止制表键按下使文本区域失焦,尽管它不会留下制表符。当我最初试图让它工作时,我注意到如果我定义如下函数,它会在光标位置放置一个制表符。
function codeEdit_keyDown(e) {
if (e.keyCode == 9) {
alert("");
return false;
}
}
我的两个问题是:
- 为什么添加警报会导致添加选项卡?
- 有没有办法在光标处添加选项卡,而不必找到光标位置,在 texarea 中拆分文本并手动添加制表符(并且不必每次用户按下制表符时都发出警报)?
谢谢
编辑:这似乎只适用于 Chrome,不适用于 IE、Safari 或 Firefox