faire readonly/désactiver tinymce textarea
je dois désactiver ou faire en lecture seule une tinymce textarea à l'exécution.
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);
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');
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);
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;
}
}
});
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
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',
....});
peut-être que cette ligne de code aide d'autres navigateurs utilisant iframes.
tinymce.activeEditor.getBody().contenteditable = false
salutations!
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);
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);
});
cela fonctionne pour ASP.NET MVC Razor
readonly: @(Model.Readonly ? "true" : "false")
en initialisant tinyMCE:
tinymce.init({/* put readonly setting here */});