在VB.Net中动态调整Multiline文本框的大小

时间:2010-12-22 19:29:18

标签: vb.net javascript-events

我正在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

3 个答案:

答案 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读取。