faire readonly/désactiver tinymce textarea

je dois désactiver ou faire en lecture seule une tinymce textarea à l'exécution.

35
demandé sur ROMANIA_engineer 2012-12-14 19:42:18

10 réponses

utilisez le paramètre de configuration readonly

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

Voici un lien vers une démo.

mise à Jour: Ce que vous pouvez faire pour empêcher les utilisateurs de modifier le contenu dans votre éditeur est de définir l'attribut contenteditable du corps d'iframe des éditeurs à false:

tinymce.activeEditor.getBody().setAttribute('contenteditable', false);
54
répondu Thariama 2012-12-17 08:42:30

de la version 4.3.x sur vous pouvez utiliser le code ci-dessous pour le mode en lecture seule

tinymce.activeEditor.setMode('readonly');

et pour le design de mode:

tinymce.activeEditor.setMode('design'); 
36
répondu grajsek 2016-03-14 08:40:25

SI vous avez seulement un éditeur, cela fonctionne:

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

Si vous avez plusieurs éditeurs, vous devez les sélectionner par l'id du textarea:

tinyMCE.get('textarea_id').getBody().setAttribute('contenteditable', false);
24
répondu Makiavelo 2014-03-17 16:31:26

Thariama's solution réglera toutes les textareas de TinyMCE sur la page en lecture seule.

la meilleure solution que j'ai trouvée était posté le par Magnar Myrtveit qui permettra de définir les champs à readonly qui ont l'attribut lecture seule. Voici le code:

tinyMCE.init({
    ...
    setup: function(ed) {
        if ($('#'+ed.id).prop('readonly')) {
            ed.settings.readonly = true;
        }
    }
});
9
répondu josephdpurcell 2017-05-23 12:18:14

Pour désactiver vous pouvez appeler cette commande:

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

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

' mceToggleEditor' la commande active ou non le mode WYSIWYG en affichant ou en masquant l'instance textarea et editor. Ce n'est pas la même chose que mceAddControl ou mceRemoveControl parce que 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
répondu Gaurav 2016-01-13 12:55:37

vous pouvez utiliser

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

prenez regarder une solution complète, de mon côté serveur 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>
            }

        });

anather façon de le faire si vous avez server side condition qui sera supprimée dans le code HTML renvoyé

 tinymce.init({
    selector: ... ,
    ....
    @if (ViewBag.desableEditExseptExportNumber != null && ViewBag.desableEditExseptExportNumber == true)
    {
         <text>
              readonly: 1,
         </text>
    }
    language: 'ar',
    ....});
1
répondu Basheer AL-MOMANI 2016-10-19 16:59:28

peut-être que cette ligne de code aide d'autres navigateurs utilisant iframes.

tinymce.activeEditor.getBody().contenteditable = false

salutations!

0
répondu antoniosanct 2013-10-04 06:23:11

j'essaie d'utiliser readonly: 1 commande lorsque j'utilise la barre d'outils disparaît.

comment utiliser le

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

0
répondu user3109762 2013-12-17 05:17:25

Vous pouvez voir cette réponse ici par @se sont révoltés: https://stackoverflow.com/a/34764607/1827960.

je l'ai utilisé pour arriver à 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
répondu Blair Connolly 2017-05-23 12:18:14

cela fonctionne pour ASP.NET MVC Razor

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

en initialisant tinyMCE:

tinymce.init({/* put readonly setting here */});
0
répondu adam.bielasty 2018-01-03 16:40:19