如何在键入时检测textarea中的新行而不使用JQuery设置行高?

时间:2016-04-19 06:28:40

标签: javascript jquery

有没有办法在jQuery中检测;是否在最终用户连续输入文本区域时创建了新行?我无法设置行高,最小高度为textarea。

enter image description here

小提琴:http://jsfiddle.net/5wdzH/113/

注意:这里我不是询问\ n(回车)而是关于新行

   enteredText = $( this ).val();
   numberOfLineBreaks = (enteredText.match(/\n/g)||[]).length; //When we press enter then only the value comes but not for new row.

Textarea属性:

  $(e).css({'height': 'auto', 'overflow-y': 'hidden'}).height(e.scrollHeight);

2 个答案:

答案 0 :(得分:1)

我认为测量它的最佳方法是计算文本区域的列数,并检查输入的字符数是否超过该值。这不会受到宽字母或细长字母的阻碍(除外一个或两个字符的错误边距)。

var numberOfColumns = 0; var numberOfLines = 1;

第一:

$( "#watched_textarea" ).each(function(){
        numberOfColumns = $(this).context.cols;
});

然后:

if (characterCount > numberOfColumns) {
    numberOfLines = parseInt(characterCount / numberOfColumns) + 1;
} 

你可以看看 - 更新你的小提琴:http://jsfiddle.net/5wdzH/116/

答案 1 :(得分:0)

有两种方法可以做到这一点 1)如果你想识别输入按,那么你可以增加行计数器        if(e.keyCode == 13){        //增加行计数器        }

2)如果你使用固定宽度的textarea,那么你可以计算一行中可以容纳的单词数。字符数除以此因子将给出行数

我认为这会对你有所帮助