自动调整textarea删除退格上的行

时间:2014-12-12 20:27:36

标签: javascript jquery html textarea

我有以下代码用于自动调整textarea:

HTML:

<textarea class="autoresize" id="txt" rows="2"></textarea>

JS:

$('#txt').keydown(function(e) {
  var $this = $(this),
      rows = parseInt($this.attr('rows'));

  // on enter, add a row
  if (e.which === 13)
    $this.attr('rows', rows + 1);

  // on backspace, remove a row -- THIS IS THE PROBLEM
  if (e.which === 8 && rows !== 2) 
    $this.attr('rows', rows - 1);
});

效果很好,但是当我按下退格键来删除单词中的一个字母时,它也会删除行,这就是我的问题。
我希望它在用户“删除”空行时收缩,但我不知道如何实现它。

如果需要,可以在this fiddle中查看。

2 个答案:

答案 0 :(得分:2)

您需要检查最后一行是否为空。 Demo

if (e.which === 8 && rows !== 2) {
        lines = $(this).val().split('\n');

        if(!lines[lines.length - 1]) {
            $this.attr('rows', rows - 1);
        }
}

答案 1 :(得分:0)

只计算您输入的文本的长度(在每个keydown中)然后当您使用退格键时检查最后一个字符(使用长度中的索引获取它)是\ n,然后才删除行。