2014-09-01 71 views
0

我有一个textarea,我想在用户按Tab键时添加一个制表符“\ t”。 我当前的代码是:制表符分隔符在Chrome textarea中不起作用 - Javascript

textarea.onkeydown = function (e) { 
    var key = (e.keyCode || e.which); 
    if (key == 9) { 
    (e.preventDefault ? e.preventDefault() : e.stopPropogation()); 
    var s = this.selectionStart; 
    var end = this.selectionEnd; 
    this.value = this.value.substring(0, s) + "\t" + this.value.substring(end); 
    this.selectionStart = end + 1; 
    } 
}; 

它在Firefox正常工作,在IE浏览器的文本到处移动,而tab键举行,但它增加了一个标签,但是在Chrome中什么也没有发生。我查看了开发人员工具中的value属性,并且看到了选项卡,但它们不显示在textarea中,我无法选择或将光标移到它们上面。

+1

它工作正常,我http://jsbin.com/zoretefupika/1/edit – 2014-09-01 17:26:02

+0

@VasilVanchuk的JSBin为我工作为好,我的textarea的CSS或字体可以如何影响它? – Joel 2014-09-01 17:55:38

+0

也许吧。你可以在jsbin上展示你的案例吗? – 2014-09-01 18:11:09

回答

0

在你的代码 - 删除

> white-space: nowrap; 

为textarea的

http://jsbin.com/tacagavawuwa/9/空白

NOWRAP序列将折叠成一个单一的空白。 文字永远不会换行到下一行。该文本在同一 线继续直到
标签遇到 http://www.w3schools.com/cssref/pr_text_white-space.asp

+0

有没有办法让浏览器不会崩溃空白,但不能将文本换行到新行? – Joel 2014-09-01 20:27:25

+1

没关系<纹理wrap =“off”>是我真正想要的 – Joel 2014-09-01 20:34:04