我有以下代码用于自动调整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中查看。
答案 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,然后才删除行。