在textarea中的当前位置之后插入一个新行

时间:2018-01-25 17:28:28

标签: javascript html css

我有一个textarea里面有几行:

  

购买杂货:

     
      
  1. 番茄
  2.   
  3. 洋葱
  4.   
  5. 3胡萝卜
  6.   
  7. 绿色
  8.   

我决定在洋葱后添加一个新行我该怎么办?我想在此之后单击并使用ctrl + enter组合添加一个新行。

我当前的代码在textarea的最末端添加了一个新行:

close

没有jQuery请

3 个答案:

答案 0 :(得分:2)

这是一个现场演示,展示SHIFT + ENTER开箱即用:没有恶作剧。

<label>Use <code>SHIFT</code> + <code>ENTER</code> to insert a line break: <br>
<textarea>
1. A
2. B
3. C
</textarea>
</label>

答案 1 :(得分:1)

如果你想在这里使用CTRL + ENTER,那就是一个解决方案:

&#13;
&#13;
var textAreaField = document.getElementById('tb');
textAreaField.addEventListener('keydown', function(e) {
    if(e.ctrlKey && e.keyCode == 13) {
      var position = this.selectionEnd;
      this.value = this.value.substring(0, position) + '\n' + this.value.substring(position);
      this.selectionEnd = position;
    }
});
&#13;
<textarea id="tb"></textarea>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

不要失败。让您的用户使用默认的SHIFT + ENTER
使用ENTER(即)发送聊天帖 - 是一种常见的“功能”。想要/需要创建他们已经知道的新行(在这种情况下)的用户可以使用SHIFT + ENTER来创建换行符。 这是一个很好的déjàvu用户体验。

因此,不是创建其他功能,而是改善模糊文本区域的功能

var textaAreaField = document.getElementById("textaAreaField");

textaAreaField.addEventListener('keydown', function(e) {
  // Blur only if ENTER was not used in combo with SHIFT
  if (e.keyCode === 13 && !e.shiftKey) {
     this.blur();
  }
});
textarea{font:14px/1.4 sans-serif; width:100%; padding: 8px; box-sizing: border-box;min-height: 160px;}
ENTER = blur textarea<br>
ENTER + SHIFT = create newline

<textarea id="textaAreaField">
tomato
Onion
3 carrots
greens</textarea>