How to limit the number of characters allowed in a textbox?
MaxLength="Int32"
<asp:TextBox ID="txtBodySMS" runat="server" Rows="10" MaxLength="220"
TextMode="MultiLine" Width="100%"></asp:TextBox>
MaxLength
does not apply to ASP.NET to Textboxes with TextMode="MultiLine"
. An easy way to do this and keep your MultiLine
mark up would be to add:
onkeypress="return this.value.length<=10"
with 10 being the limit. Like so:
<asp:TextBox ID="txtBodySMS" runat="server" Rows="10" onkeypress="return this.value.length<=10" TextMode="MultiLine" Width="100%"></asp:TextBox>
EDIT Option One (Server side) The above example has some issues pointed out over the years. The underlying problem is a multi-line textBox
is rendered as a text-area and MaxLength
is removed. We can also fix in the C# or VB asp.net code behind of the page by forcing the re-attachment of MaxLength
instead of attaching onkeypress
.
protected void Page_Load(object sender, EventArgs e)
{
txtBodySMS.Attributes.Add("maxlength", "10");
}
EDIT Option Two (Client side): Here's a simple jquery solution. Include the following script in your head instead of attaching onkeypress
or editing the server side code.
$(document).ready(function () {
$(".MultiLineLimit").on('change keydown paste input', function () {
this.value = (this.value.length <= 10 ? this.value : this.value.substring(0, 10));
});
});
Now just add the MultiLineLimit
class to any of your <asp:TextBox>
textbox of TextMode="MultiLine"
.
<asp:TextBox ID="txtBodySMS" CssClass="MultiLineLimit" runat="server" Rows="10" TextMode="MultiLine" Width="100%"></asp:TextBox>
Remember in either scenario client side validation can be removed. If your storing this in a database it should always be validated server side as well.
This did it for me. I did not keep the MultiLine property.
<asp:TextBox ID="txtBodySMS" runat="server" Rows="10" MaxLength="2" Width="100%"></asp:TextBox>