Textarea使用.attr()更新在enter和keypress上增加++行

时间:2015-04-29 12:49:35

标签: javascript jquery html textarea

我有一个textarea,我希望在每次输入时增加一行,每次当文本进入另一行时都要输入。所以我有3个条件,何时显示我想对所有使用的行进行编号并根据这个设置行高:

  

一:var countRows = $(" textarea")。val()。split(/ \ r | \ r \ n | \ n /)。length;

     

二:使用keypress == 13

     

和三:当文本进入另一行时输入

直到现在我已经实现了这一点,但实际上并没有起作用:|

var countRows = $("textarea").val().split(/\r|\r\n|\n/).length;   
var keynum = 13; //enter keynum

//for default state
//not calculating 
$("textarea").attr("rows", countRows + 1);

//for enter key 
//not really working
$("textarea").on('keypress', keynum, function() {
   $(this).attr("rows", countRows + 1);
     // alert("jjj");
});

//for case whentext it goes into another row wile typing

我只想使用.attr()并更新该属性" rows"当添加或删除一行时。

2 个答案:

答案 0 :(得分:2)

来自then I like (bottom of the page)

$("textarea").keyup(function(e) {
    while($(this).outerHeight() < this.scrollHeight + parseFloat($(this).css("borderTopWidth")) + parseFloat($(this).css("borderBottomWidth"))) {
        $(this).height($(this).height()+1);
    };
});

答案 1 :(得分:0)

$('textarea').keyup(function(e) {
    var $lineHeight = $(this).height() / $(this).get(0).rows;
    var $lines = $(this).val().split(/\r|\r\n|\n/).length;
    $(this).get(0).rows = $lines;
});

如果在textarea中添加新行,请增加大小。 如果从文本区域删除行,请减小大小。 如果未在textarea中添加/删除行,则无济于事。