TinyMCE text editor max char limit TinyMCE text editor max char limit codeigniter codeigniter

TinyMCE text editor max char limit


I suggest you execute your code onKeyDown, because on KeyUp the letter is already in the editor.

    //peform this action every time a key is pressed    ed.onKeyDown.add(function(ed, e) {      //define local variables      var tinymax, tinylen, htmlcount;      //manually setting our max character limit      tinymax = ed.settings.charLimit;      //grabbing the length of the curent editors content      tinylen = ed.getContent().replace(/(<([^>]+)>)/ig,"").length;      //setting up the text string that will display in the path area      htmlcount = "HTML Character Count: " + tinylen + "/" + tinymax;      //if the user has exceeded the max turn the path bar red.      if (tinylen > tinymax){        // place text string in path bar        if ( $('#max_char_string').size() ){          $('#max_char_string').html( ' ' + htmlcount);        }        else {          $("div#"+ed.id+"_path_row").append('<span id="max_char_string"> '+htmlcount+'</span>')        }        // prevent insertion of typed character        e.preventDefault();        e.stopPropagation();        return false;      } 


I had the same issue and found this link very useful: http://www.ryann.ca/?p=186

Although I changed this slightly so that it reads the attribute of maxlength direct from the textarea.

tinyMCE.init({    // Options    setup : function(ed) {        ed.onKeyUp.add(function(ed, e) {            var tinylen, htmlcount, maxlength = $("#" + tinyMCE.activeEditor.id).attr("maxlength");            if (maxlength) {                // grabbing the length of the curent editors content                tinylen = ed.getContent().length;                htmlcount = "HTML Character Count: " + tinylen + "/" + maxlength;                if (tinylen > maxlength) {                    htmlcount = "<span style='font-weight:bold; color: #f00;'>" + htmlcount + "</span>";                }                // write the html count into the path row of the active editor                tinymce.DOM.setHTML(tinymce.DOM.get(tinyMCE.activeEditor.id+ '_path_row'), htmlcount);            }        });//ed.onKeyUp.add    }//setup});


Hope it will work :)

setup: function(ed) {                        var maxlength = parseInt($('#'+(ed.id)).attr("maxlength"));            var count = 0;            ed.on('keydown', function(e) {                count++;                if (count >= maxlength)                {                    alert("false");                    return false;                }            });        },