function LimitSet(t,s,l){ function snip(len) { return function (e) {this.value = this.value.slice(0, len);}; } function prevent(len) { return function (e) { if (this.length >= len) { if (e.preventDefault) e.preventDefault(); return false; } } } function notify(len, msg){ return function(e) { msg.innerHTML = (len - this.value.length); }; } var len = l; var textarea = t; var sn = snip(len), p1 = prevent(len), p2 = prevent(len - 1), n=notify(len,s); textarea.addEventListener('change', sn, true); textarea.addEventListener('input', sn, true); textarea.addEventListener('keydown', p2, true); textarea.addEventListener('keypress', p2, true); textarea.addEventListener('keyup', p1, true); textarea.addEventListener('paste', sn, true); textarea.addEventListener('keyup', n, false); }