我正在VB.net的网站上工作,我需要创建一个mutliline文本框。我可以使用java脚本增加文本框的高度,因为当页面获得刷新或再次加载时,文本框大小将恢复为默认高度。 代码:
<asp:TextBox ID="txtDescription" runat="server" TextMode="MultiLine" rows="3" onkeypress="grow();" Width="590px"></asp:TextBox>
var TEXTAREA_LINE_HEIGHT = 2;
function grow(source)
{
var textarea = document.getElementById(source);
var newHeight = textarea.scrollHeight;
var currentHeight = textarea.clientHeight;
if (newHeight > currentHeight) {
textarea.style.height = newHeight + 5 * TEXTAREA_LINE_HEIGHT + 'px';
}
}
任何帮助都会受到高度关注。 谢谢,Yogesh
答案 0 :(得分:2)
您好我找到了问题的解决方案。请在txtDescription_Load事件中编写以下代码:
Protected Sub txtDescriptiont_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Load
Dim charRows As Integer = 0
Dim tbCOntent As String
Dim chars As Integer = 0
tbCOntent = txtInput.Text
txtInput.Columns = 25
chars = tbCOntent.Length
charRows = chars / txtInput.Columns
Dim remaining As Integer = chars - charRows * txtDescription.Columns
If remaining = 0 Then
txtDescription.Rows = charRows
txtDescription.TextMode = TextBoxMode.MultiLine
Else
txtDescription.Rows = charRows
txtDescription.TextMode = TextBoxMode.MultiLine
End If
End Sub
答案 1 :(得分:1)
您可以使用此jQuery插件:autogrow-textarea-plugin。
问题是你必须处理一些在不同浏览器中不同的事件(例如onpropertychange),以便textarea在加载或按键时改变它的高度。 jQuery插件使其更容易。
答案 2 :(得分:0)
基本上你的问题是你背后的代码不是“意识到”高度的变化。有几种方法可以解决这个问题。
一种方法是将大小值写入从onbeforeunload调用的隐藏字段,然后从隐藏字段onload读取。