John Magnolia
John Magnolia

Reputation: 16793

Tinymce auto spellcheck, without clicking button

Is it possible to set turn the default spell checker on by default. Without clicking the button in the toolbar each time?

I am using the default browser spell checker functionality in the browser.

setup: function (ed) {
    ed.addCommand('mceSpellCheckRuntime', function() {
        t = ed.plugins.spellchecker;
        if (t.mceSpellCheckRuntimeTimer) {
          window.clearTimeout(t.mceSpellCheckRuntimeTimer);
        }
        t.mceSpellCheckRuntimeTimer = window.setTimeout(function() {
          t._done();
          t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {
            if (r.length > 0) {
              t.active = 1;
              t._markWords(r);
              ed.nodeChanged();
            }
         });
       }, 3000); //3 seconds
    });


    ed.onInit.add(function(ed){
        ed.pasteAsPlainText = true;

        ed.execCommand('mceSpellCheckRuntime');
    });


    ed.onKeyUp.add(function(ed, e) {
        ed.execCommand('mceSpellCheckRuntime');
    });
},

Upvotes: 1

Views: 2229

Answers (3)

Ricardo Vigatti
Ricardo Vigatti

Reputation: 525

Working solution for TinyMCE 3

Create a helper function to improve UX:

function delay(fn, ms) {
    let timer = 0
    return function(...args) {
        clearTimeout(timer)
        timer = setTimeout(fn.bind(this, ...args), ms || 0)
    }
}

Register a new command within TinyMCE Spell Checker plugin:

ed.addCommand('mceSpellCheckAuto', function() {
    if (t.active) {
        t._removeWords();
        ed.nodeChanged();
            
        t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {
            if (r.length > 0) {
                t._markWords(r);
                ed.nodeChanged();
            }
        });
    }
});

Call your new command from a keyPress event:

ed.onKeyPress.add(delay(function() {
    tinymce.execCommand('mceSpellCheckAuto', true);
}, 500));

Upvotes: 0

user3702787
user3702787

Reputation: 11

Its quiet possible........:)

Try the below code.......

ed.onInit.add(function(ed, e) {
  setTimeout(function () {
  tinyMCE.activeEditor.controlManager.setActive('spellchecker', true);  tinymce.execCommand('mceSpellCheck', true);
 }, 1);
});

Upvotes: 1

Thariama
Thariama

Reputation: 50832

Nope, this is not possible due to the fact that there are so many possibilities of using a spellchecker in tinymce. The user may however define on which events the spellchecker should check (that's what you already did).

Upvotes: 0

Related Questions