Toshi
Toshi

Reputation: 2608

ASP.Net Multiline Textbox Maxlength

I've bee searching for a way to limit the text within a TextBox which looks like this

<asp:TextBox runat="server" ID="tbTest" TextMode="MultiLine"  
             MaxLength="20" Rows="5" Columns="30" >
</asp:TextBox>

The property MaxLength="20" only works if the other property TextMode="MultiLine" is not set. It isn't even rendered.

The output in the HTML looks like this:

<textarea name="ctl00$ContentPlaceHolder1$tbTest" 
          id="ctl00_ContentPlaceHolder1_tbTest" rows="5" cols="30">
</textarea>

If you search here on SO for a solution to solve this issue, you get 2 ways suggested:

BUT

Most of the answer are previous 2013 and the support of maxlength over all browsers was from 2013 as IE10 was released (reference).

Currently every Browser supports this attribute - test it on your own: https://jsfiddle.net/wuu5wne1/

QUESTION

How can I force ASP.Net to apply this attribute to my multiline textbox?

Upvotes: 10

Views: 11340

Answers (3)

CH-siko
CH-siko

Reputation: 23

In Visual Studio 2019, maxLength will work if you add columns property

<asp:TextBox runat="server" Columns="1" MaxLength="50" class="form-control"  ID="txtFirstName" ClientIDMode="Static" required />

Upvotes: 0

Toshi
Toshi

Reputation: 2608

Welcome to 2020 - this one finally works now on all Browsers

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        tbTest.Attributes.Add("maxlength", "20");
    }
}

Upvotes: 12

WearySky
WearySky

Reputation: 107

My solution to this was to just manually set the maxlength property via jquery in document.ready:

$(document).ready(function ()
{
    $('#<%=tbTest.ClientID%>').prop('maxlength', 20);
}

Yeah, it's a bit hacky, but if you want to use the asp control (I didn't want to have to deploy a code change), it works.

Upvotes: 5

Related Questions