October 2017 : Online course in ASP.NET MVC / Core. Conducted by Bipin Joshi. Read more...
Registration for October 2017 batch of ASP.NET MVC / Core online course has already started. Conducted by Bipin Joshi. Book your seat today ! Click here for more details.

Twitter like character counter - jQuery version

My recent article titled Displaying a Character Counter for Multiline Textboxes shows you how to create a character counter like Twitter for multiline textboxes. The articles does so using ASP.NET AJAX client behavior. Here is a jQuery version of the code that does similar job. Note, however, that unlike ASP.NET AJAX client behavior as illustrated in the article the following code takes a "function" based approach to quickly implement similar functionality.

Add the following in the <script> block :

$(document).ready(function() {
    $("#TextBox1").keyup({ MaxLength: 20, Type: 'Remaining', 
                           AllowOverflow: true }, OnKeyUp);
    $("#TextBox1").blur(OnBlur);
    $("#TextBox1").keyup();
})

function OnKeyUp(event) {
    var text = $("#TextBox1").val();
    if (text.length > event.data.MaxLength) {
        if (!event.data.AllowOverflow) {
            $("#TextBox1").text(text.substring(0, event.data.MaxLength));
        }
    }
    var diff = 0;
    if (event.data.Type == 'Remaining') {
        diff = event.data.MaxLength - $("#TextBox1").val().length;
        if (diff < 0) {
            $("#lblCounter").removeClass("NormalCounter");
            $("#lblCounter").addClass("WarningCounter");
        }
        else {
            $("#lblCounter").removeClass("WarningCounter");
            $("#lblCounter").addClass("NormalCounter");
        }
    }
    else {
        diff = $("#TextBox1").val().length;
        if (diff > event.data.MaxLength) {
            $("#lblCounter").removeClass("NormalCounter");
            $("#lblCounter").addClass("WarningCounter");
        }
        else {
            $("#lblCounter").removeClass("WarningCounter");
            $("#lblCounter").addClass("NormalCounter");
        }
    }
    $("#lblCounter").text(diff);
}

function OnBlur(event) {
    $("#TextBox1").keyup();
}

Change MaxLength and Type to suit your requirements. Type can be Remaining or Total. AllowOverflow if set to true allows you to exceed MaxLength and displays counter in WarningCounter style. If AllowOverflow is false you cannot enter beyond MaxLength value.

Also, add the following CSS classes in style sheet file or inline.

.NormalCounter
{
    font-family:Arial;
    font-size:25px;
    color:Navy;
}

.WarningCounter
{
    font-family:Arial;
    font-size:25px;
    color:Red;
}

 


Bipin Joshi is a software consultant, an author and a yoga mentor having 22+ years of experience in software development. He also conducts online courses in ASP.NET MVC / Core and Design Patterns. He is a published author and has authored or co-authored books for Apress and Wrox press. Having embraced the Yoga way of life he also teaches Meditation and Mindfulness to interested individuals. To know more about him click here.

Get connected : Twitter  Facebook  Google+  LinkedIn

Posted On : 15 December 2010


Tags : ASP.NET AJAX Web Forms Server Controls jQuery JavaScript