Reputation: 2608
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:
asp:RegularExpression
) validator and validate the controlBUT
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
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
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
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