it-swarm.com.de

schreibgeschützt machen/tinymce textarea deaktivieren

Ich muss zur Laufzeit eine Tinymce-Textarea deaktivieren oder readonly machen.

40
Ahmed-Anas

Verwenden Sie den Konfigurationsparameter readonly

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

Hier ist ein Link zu einer Demo .

Update: Um zu verhindern, dass Benutzer Inhalte in Ihrem Editor bearbeiten, müssen Sie das contenteditable-Attribut der Editoren im iframe-body auf false setzen:

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

Ab Version 4.3.x können Sie den folgenden Code für den Readonly-Modus verwenden

tinymce.activeEditor.setMode('readonly');

und für den Designmodus:

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

WENN Sie nur einen Editor haben, funktioniert dies:

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

Wenn Sie mehrere Editoren haben, müssen Sie diese anhand der ID des Textbereichs auswählen:

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

Thariamas Lösung setzt alle TinyMCE-Textbereiche auf der Seite zum Lesen.

Die beste Lösung, die ich gefunden habe, war posted von Magnar Myrtveit, die Felder auf Readonly setzt, die das Readonly-Attribut haben. Hier ist der Code:

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

sie können verwenden 

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

schauen Sie sich die vollständige Lösung an, meine Serverseite ist 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>
            }

        });

eine andere Möglichkeit, dies zu tun, wenn Sie server side condition haben, der im zurückgegebenen HTML-Code entfernt wird

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

Zum Deaktivieren können Sie diesen Befehl aufrufen:

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

Und um den Editor wieder zu aktivieren, können Sie diesen Befehl erneut aufrufen.

Der Befehl 'mceToggleEditor' schaltet den WYSIWYG-Modus ein oder aus, indem der Textbereich und die Editorinstanz angezeigt oder ausgeblendet werden. Dies ist nicht dasselbe wie mceAddControl oder mceRemoveControl, da die Instanz noch vorhanden und nicht initialisiert ist, sodass diese Methode schneller ist.

Link für obigen Befehl: http://archive.tinymce.com/wiki.php/TinyMCE3x:Befehlsidentifizierer

1
Gaurav

Vielleicht hilft diese Codezeile in anderen Browsern, die iframes verwenden.

tinymce.activeEditor.getBody().contenteditable = false

Grüße!

0
antoniosanct

Ich versuche, den Befehl Readonly: 1 Zu verwenden, wenn ich die Symbolleiste verwende.

wie benutzt man das 

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

0
user3109762

Das funktioniert für ASP.NET MVC Razor 

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

beim Initialisieren von tinyMCE:

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

Diese Antwort finden Sie hier unter @rioted: https://stackoverflow.com/a/34764607/1827960 .

Ich habe es benutzt, um mit dieser Lösung zu kommen:

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