$.fn.extend({ characterLimiter: function(limit, $label) { $(this).on("keyup focus show", function() { setCount(this, $label); }); // TODO: append label container after $this, instead of hard codeing 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")); });