2012-09-25 23 views
5

¿cómo iba a establecer tinymce para ajustar automáticamente el editor como readonly si el textarea ya tiene la attr("readonly")tinymce automático establecido sólo lectura si el área de texto de sólo lectura tiene

+0

¿por qué quiere añadir sólo lectura si su ya tienen sólo lectura – StaticVariable

+3

@jhonraymos, ya ha establecido el área de texto de sólo lectura. Ahora él quiere que tinymce lo trate de esa manera también. –

+0

ohh no estoy familiarizado con tinymce – StaticVariable

Respuesta

14

Una solución más general podría ser

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

Esto funcionará para todas las áreas de texto sin tener que especificar ningún código. Además, establecerá el editor en modo solo lectura y no solo evitará la edición.

+0

¡Dios! ¡Finalmente encuentro una solución! –

+0

buen truco hombre. +1 –

0

si lo ajusta el modo de readOnly tinymce se debe utilizar la API de TinyMCE. lo que puede establecer sólo lectura:

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

Si desea establecer único valor "sólo lectura" para el área de texto, así que por favor tenga en cuenta que tinymce tiene propio envoltorio para este campo, y el campo nativa (de html) - establecer como campo oculto, por lo que es inútil juego de cualquier atributo para una

+0

esto funcionaría. El problema aquí es que quiere que esta configuración dependa de la clase de su área de texto. Consulte mi solución para este – Thariama

2

si no desea aplicar tinyMCE a los campos de sólo lectura utilizan class="readonly" luego serán ignorados

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

las áreas de texto con la clase de sólo lectura

+1

. El problema con este enfoque es que el HTML se mostrará si utilizo un área de texto estándar. Necesito tinymce para mostrar esto en un iframe –

4

en caso de tener la siguiente área de texto

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

puede guardar el conocimiento de tener un atributo de sólo lectura a una variable:

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

Ahora la función init tinymce. Elegimos el modo none para iniciar el editor más tarde.

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

aquí, se puede init su instancia editor utilizando el ID de su área de texto

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

Su instancia del editor será inicializado como de sólo lectura.

+0

Dude deberías escribir un libro con todas las modificaciones que conoces en tinymce, definitivamente lo compraría. Su documentación es difícil de entender, bueno para mí: por ejemplo: http://www.tinymce.com/wiki.php/Command_identifiers y http://www.tinymce.com/wiki.php/API3:method.tinymce.execCommand y busca: 'mceAddControl' no devuelve nada.Supongo que es fácil de encontrar, si sabes exactamente lo que buscas –

+0

gracias, pero mi conocimiento está lejos de dejarme escribir un libro al respecto :) Encontrar lo correcto en la documentación puede ser complicado a veces. Encontrará la sugerencia de mceAddControl en la descripción del modo de parámetros de configuración: http://www.tinymce.com/wiki.php/Configuration:mode – Thariama

0

Tengo varios mce pequeños y algunos de ellos tienen class = "nonEditableMCE" y algunos tienen class = "editableMCE". Si ese es el caso, puede tener dos inits y esto está funcionando. Es mucho más simple cuando los Id son dinámicos para usar el selector de clase.

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

    }); 

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

    }); 
Cuestiones relacionadas