2011-07-17 44 views

回答

3

demo

<form method="post" action=""> 
<textarea name="text" cols=65 rows=2 value=""> 
</textarea> 
</form><br><br> 
<script> 
    $(function(){ 
     $("textarea").keyup(function(){ 
      if ($(this).val().length > 52) { 
       $(this).attr('rows', '15'); 
      } 
      //$("body").prepend($(this).val().length+'<br>'); 
     }); 
    }); 
</script> 
+0

它不是真的工作,我想行增加 –

+0

編輯......... – genesis

+0

你有一個錯字。 'lenght'應該是'length'或'size()'。 – MacMac

0

您還沒有指定多少行應如何添加想要使用自動增長或JQuery的彈性到textarea,但我希望這回答你的問題。只有已經通過rows屬性在HTML中設置了textarea的默認行數時,此代碼纔有效。

$(function() { 
    var rowsAdded = false; 
    $("#myTextarea").keyup(function() { 
     var textarea = $(this); 
     if (textarea.val().length > 52 && !rowsAdded) { 
      textarea.attr('rows', parseInt(textarea.attr('rows')) + rowsToAdd); 
      // replace rowsToAdd with the number of rows to add to the textarea 
      rowsAdded = true; 
     } 
    }); 
}); 
+1

接近但不完全。這將在textarea的長度達到52之後每次添加「rowsToAdd」。因此,如果textarea中已經有52個字符並且用戶輸入「abcd」,rowsToAdd將被添加4次。 http://jsfiddle.net/kasdega/SKmUF/2/ – kasdega

+0

@kasdega你是對的。我編輯了答案,以便「rowsToAdd」只添加一次。謝謝。 – silviubogan

0

如何:

$(function() { 
    $(".growingTextarea").bind("keyup", function() { 
     var textarea = $(this); 
     var currentRows = parseInt(textarea.attr('rows')); 

     var isScrollable = textarea.scrollTop();   
     if(isScrollable) { 
      textarea.attr('rows', currentRows+1); 
     } 
    }); 
}); 

http://jsfiddle.net/kasdega/SKmUF/

+0

當然這不會縮小textarea,如果KEYUP是刪除但你沒有要求。 – kasdega