web-dev-qa-db-fra.com

make readonly/disable tinymce textarea

J'ai besoin de désactiver ou de faire en lecture seule un texte tinymce au moment de l'exécution.

40
Ahmed-Anas

Utilisez le paramètre de configuration en lecture seule

tinyMCE.init({
        ...
        theme : "advanced",
        readonly : 1
});

Voici un lien vers une démo .

Update: Pour empêcher les utilisateurs de modifier le contenu de votre éditeur, définissez l'attribut contenteditable des éditeurs iframe body sur false:

tinymce.activeEditor.getBody().setAttribute('contenteditable', false);
56
Thariama

A partir de la version 4.3.x, vous pouvez utiliser le code ci-dessous pour le mode lecture seule

tinymce.activeEditor.setMode('readonly');

et pour le mode création:

tinymce.activeEditor.setMode('design'); 
39
grajsek

Si vous n’avez qu’un seul éditeur, cela fonctionne:

tinymce.activeEditor.getBody().setAttribute('contenteditable', false);

Si vous avez plusieurs éditeurs, vous devez les sélectionner en fonction de l'id de la zone de texte:

tinyMCE.get('textarea_id').getBody().setAttribute('contenteditable', false);
24
Makiavelo

La solution de Thariama mettra tous les textes de TinyMCE de la page en lecture seule.

La meilleure solution que j'ai trouvée était posted de Magnar Myrtveit, qui définira les champs en lecture seule dotés de l'attribut readonly. Voici le code:

tinyMCE.init({
    ...
    setup: function(ed) {
        if ($('#'+ed.id).prop('readonly')) {
            ed.settings.readonly = true;
        }
    }
});
11
josephdpurcell

vous pouvez utiliser 

this.getBody().setAttribute('contenteditable', false);

jetez un oeil à la solution complète, mon côté serveur est Asp.net MVC

 setup: function (ed) {
        ed.on('init', function () {
            this.execCommand("fontSize", false, "17px");
            $("html,body").scrollTop(0);
            @if (ViewBag.desableEdit != null && ViewBag.desableEdit == true)
            {
                <text>
                    this.getBody().setAttribute('contenteditable', false);
                </text>
            }

        });

une autre façon de le faire si vous avez server side condition qui sera supprimé du code HTML renvoyé

 tinymce.init({
    selector: ... ,
    ....
    @if (ViewBag.desableEditExseptExportNumber != null && ViewBag.desableEditExseptExportNumber == true)
    {
         <text>
              readonly: 1,
         </text>
    }
    language: 'ar',
    ....});
1
Basheer AL-MOMANI

Pour désactiver, vous pouvez appeler cette commande:

tinymce.EditorManager.execCommand('mceToggleEditor', true, tinymceId);

Et pour réactiver l'éditeur, vous pouvez à nouveau appeler cette commande.

La commande 'mceToggleEditor' active ou désactive le mode WYSIWYG en affichant ou en masquant la zone de texte et l'instance de l'éditeur. Ce n'est pas la même chose que mceAddControl ou mceRemoveControl car l'instance est toujours là et non initialisée, donc cette méthode est plus rapide.

Lien pour la commande ci-dessus: http://archive.tinymce.com/wiki.php/TinyMCE3x:Command_identifiers

1
Gaurav

Peut-être que cette ligne de code aide les autres navigateurs utilisant des iframes.

tinymce.activeEditor.getBody().contenteditable = false

Cordialement!

0
antoniosanct

J'essaie d'utiliser Readonly: 1 lorsque la commande que je l'utilise, la barre d'outils disparaît.

comment utiliser le 

tinymce.activeEditor.getBody (). setAttribute ('contenteditable', false);

0
user3109762

Cela fonctionne pour ASP.NET MVC Razor 

readonly: @(Model.Readonly ? "true" : "false")

en initialisant tinyMCE:

tinymce.init({/* put readonly setting here */});
0
adam.bielasty

Vous pouvez voir cette réponse ici par @rioted: https://stackoverflow.com/a/34764607/1827960 .

Je l'ai utilisé pour proposer cette solution:

tinymce.settings = $.extend(tinymce.settings, { readonly: 1 });
tinymce.EditorManager.editors.forEach(function (editor) {
    tinymce.EditorManager.execCommand('mceRemoveEditor', false, editor.id);
    //tinymce.EditorManager.editors = [];
    tinymce.EditorManager.execCommand('mceAddEditor', false, editor.id);
});
0
Blair Connolly