Ext.onReady(function() { BFRC.textArea = new Ext.form.TextArea({ width: 150, height: 100 }); BFRC.updateTextareaCount = function(e) { if(!e) var e = window.event; var id = this.id; var textareaLabel = Ext.getDom(id + 'TextareaRemaining'); var textarea = Ext.getCmp(id + 'TextArea'); var textareaValue = textarea.getValue(); var textareaLength = textareaValue != '' ? textareaValue.length : 0; var remaining = 4000 - textareaLength; if(remaining < 0) { remaining = 0; textarea.setValue(textareaValue.substring(0, 4000)); } Ext.DomHelper.overwrite(textareaLabel, new Number(remaining).toString()); } BFRC.drawTextArea = function(id, config) { if(undefined == config) config = {}; config.id = id + 'TextArea'; config.applyTo = id; config.enableKeyEvents = true; var textarea = BFRC.textArea.cloneConfig(config); Ext.getDom(id).onkeyup = BFRC.updateTextareaCount; Ext.getDom(id).onkeyup(); } });