Limit the number of character in tinyMCE

后端 未结 16 1144
心在旅途
心在旅途 2020-11-29 07:44

Im using tinyMCe for my project.Everything is working fine but now i want to restrict the number of character that will be insert into tinyMce text

16条回答
  •  庸人自扰
    2020-11-29 08:16

    This is the solution that worked for me.

    I basically took the code provided by @needfulthing and fixed the errors and improved it.

    function initTinymce(){
    
            tinymce.init({
                selector: '.richtext-editable',
                plugins: ['paste'],
    
                max_chars: 50000, // max. allowed chars
    
                setup: function (ed) {                              
                    var allowedKeys = [8, 13, 16, 17, 18, 20, 33, 34, 35, 36, 37, 38, 39, 40, 46];
                    ed.on('keydown', function (e) {
                        if (allowedKeys.indexOf(e.keyCode) != -1) return true;
                        if (tinymce_getContentLength() + 1 > this.settings.max_chars) {
                            e.preventDefault();
                            e.stopPropagation();
                            return false;
                        }
                        return true;
                    });
                    ed.on('keyup', function (e) {
                        tinymce_updateCharCounter(this, tinymce_getContentLength());
                    });                             
                },
    
                init_instance_callback: function () { // initialize counter div
                    $('#' + this.id).prev().append('
    '); tinymce_updateCharCounter(this, tinymce_getContentLength()); }, paste_preprocess: function (plugin, args) { var editor = tinymce.get(tinymce.activeEditor.id); var len = editor.contentDocument.body.innerText.length; if (len + args.content.length > editor.settings.max_chars) { alert('Pasting this exceeds the maximum allowed number of ' + editor.settings.max_chars + ' characters for the input.'); args.content = ''; } tinymce_updateCharCounter(editor, len + args.content.length); } }); function tinymce_updateCharCounter(el, len) { $('#' + el.id).prev().find('.char_count').text(len + '/' + el.settings.max_chars); } function tinymce_getContentLength() { return tinymce.get(tinymce.activeEditor.id).contentDocument.body.innerText.length; } }

提交回复
热议问题