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 MultiLineLimitclass 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>

Tags:

Asp.Net