$.fn.extend({ characterLimiter: function(limit, label) { this.on("keyup focus show", function() { setCount(this, label); }); // TODO: append label container after $this, instead of hard HTML function setCount(src, label) { if(src !== undefined) { var chars = src.value.length; if (chars >= limit) { src.value = src.value.substr(0, limit); chars = limit; } label.html(limit - chars); } } setCount(this[0], label); } }); $(document).ready(function() { $('textarea').characterLimiter(1000, $(".chars span")); });