2012-09-25 5 views

Antwort

14

könnte eine allgemeine Lösung

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

Diese für alle Textbereiche arbeiten, ohne dass Sie alle IDs angeben zu müssen. Darüber hinaus wird der Editor in den schreibgeschützten Modus versetzt und nicht nur die Bearbeitung verhindert.

+0

Gott! Endlich finde ich eine Lösung! –

+0

netter Trickmann. +1 –

0

hat, wenn Sie was gesetzt schreibgeschützten Modus von TinyMCE sollten Sie tinyMCE API verwenden. so können Sie nur lesen Set:

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

Wenn Sie nur Wert "Read-only" für Textbereich, also bitte beachten Sie festlegen möchten, dass TinyMCE eigenen Wrapper für dieses Feld hat und native Feld (von html) - Set als verstecktes Feld, so dass es für eine

+0

dies würde funktionieren. Problem hier ist, dass er diese Einstellung abhängig von der Klasse seiner Textarea machen möchte - siehe meine Lösung für diese – Thariama

2

ein Attribut nutzlos Satz ist wünschen, wenn nicht tinyMCE auf die Nur-Lese-Felder class="readonly" verwenden dann

tinyMCE.init({ 
    ... 
    editor_deselector: "readonly" 
}); 

die Textbereiche mit Nur-Lese-Klasse werden ignoriert anzuwenden

+1

Das Problem mit diesem Ansatz ist, dass die HTML angezeigt wird, wenn ich ein Standard-Textarea verwende. Ich brauche Tinymce, um dies in einem iframe anzuzeigen –

4

Falls Sie das folgende Textfeld

<textarea id="my_textarea_id" readonly="readonly">Some content here.</textarea> 

Sie das Wissen ein Read-only-Attribut mit einer Variablen speichern können:

var readonly = $("textarea#my_textarea_id").attr("readonly") ? 1 : 0; 

nun die tinymce init-Funktion. Wir wählen den Modus none, um den Editor später zu initialisieren.

tinyMCE.init({ 
     theme : "advanced", 
     mode: 'none', 
     readonly : readonly, 
     ... 
}); 

Hier können Sie Ihre Editor-Instanz mit der ID Ihrem TextArea-

tinyMCE.execCommand("mceAddControl", true, "my_textarea_id"); 

Ihre Editor-Instanz als Nur-Lese-initialisiert wird init.

+0

Dude solltest du ein Buch mit allen Modifikationen schreiben, die du auf tinymce weißt, ich würde es definitiv kaufen. Ihre Dokumentation ist schwer zu verstehen, gut für mich: zB: http://www.tinymce.com/wiki.php/Command_identifiers und http://www.tinymce.com/wiki.php/API3:method.tinymce.execCommand und Sie suchen nach: 'mceAddControl' gibt nichts zurück.Ich denke, es ist einfach zu finden, wenn Sie genau wissen, was Sie suchen –

+0

danke, aber mein Wissen ist weit davon entfernt, lassen Sie mich ein Buch darüber schreiben :) Das Finden der richtigen Sache in der Dokumentation kann manchmal schwierig sein. Den Hinweis auf mceAddControl finden Sie in der Beschreibung des Konfigurationsparameter-Modus: http://www.tinymce.com/wiki.php/Configuration:mode – Thariama

0

Ich habe mehrere kleine MCEs und einige von ihnen haben class = "nonEditableMCE" und einige haben class = "editableMCE". Wenn das der Fall ist, können Sie zwei Eingänge haben und das funktioniert. Es ist viel einfacher, wenn IDs dynamisch sind, um Klassenselektoren zu verwenden.

tinymce.init({ 
     selector: ".nonEditableMCE", 
     height: 200, 
     statusbar: false, 
     readonly : 1 

    }); 

    tinymce.init({ 
     selector: ".editableMCE", 
     height: 200, 
     statusbar: false, 
     readonly: 0 

    }); 
Verwandte Themen