Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Cleditor

Estas en el tema de Cleditor en el foro de Frameworks JS en Foros del Web. Hola gente, estoy trabajando con un Modern template que tiene la clase CLEDITOR que se le agrega a un textarea y genera el editor html. ...
  #1 (permalink)  
Antiguo 23/11/2014, 06:43
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Cleditor

Hola gente,
estoy trabajando con un Modern template que tiene la clase CLEDITOR que se le agrega a un textarea y genera el editor html.

Código HTML:
Ver original
  1. <textarea id="editor_ta" class="form-control cleditor" name="texto"></textarea>

el código anterior se parsea y genera el siguiente codigo:

Código HTML:
Ver original
  1. <div class="cleditorMain" style="width: auto; height: 253px;"><div class="cleditorToolbar" style="height: 27px;"><!-- aqui van los controls copy,bold, etc--></div>
  2.  
  3. <textarea id="editor_ta" class="form-control cleditor" name="texto" style="display: none; overflow: hidden; word-wrap: break-word; resize: none; height: 64px; width: 778px;">sdsd</textarea>
  4.  
  5. <!-- A PARTIR DEL TEXTAREA CON LA CLASE CLEDITOR GENERA ESTE IFRAME CON EL AREA EDITABLE -->
  6. <iframe frameborder="0" src="javascript:true;" style="width: 778px; height: 223px;">
  7. <html><head></head><body style="margin:4px; font:10pt Arial,Verdana; cursor:text">AQUI VA EL TEXTO QUE INGRESA EL USUARIO</body></html>
  8. </iframe></div>


bueno, lo que no puedo lograr es detectar cuando un usuario hace PASTE o CONTROL+V
esto se logra con Jquery de esta manera:

Código Javascript:
Ver original
  1. $( document ).ready(function() {
  2.         $("#editor_ta").bind('paste', function() {
  3.             alert('debe limipiar de links y formato el texto')
  4.         });
  5.     });

Pero no funciona cuando el texarea tiene la clase CLEDITOR!!

alguien lo pudo solucionar? o si me puede ayudar le agradesco

saludos!
  #2 (permalink)  
Antiguo 24/11/2014, 15:15
Avatar de dAvidcA  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/dev/
Mensajes: 73
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: Cleditor

Hola Patriarka, después de un rato desordenando dicha librería y la documentación logré hacerlo así:

Código Javascript:
Ver original
  1. var editor = $("#editor_ta").cleditor()[0];
  2. var editorFrame = editor.$frame[0].contentWindow.document;    
  3. $(editorFrame).find('body').bind("paste", function() {
  4.     alert('debe limipiar links y formato el texto')
  5. });

Saludos.
  #3 (permalink)  
Antiguo 24/11/2014, 18:43
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Cleditor

Sos un genio!
sabia que se podia pero nunca lo iba a descubrir.

lo siguiente es hacer lo que dice el alert: limpiar de html el texarea

entiendo que deberia ser algo asi:

Código Javascript:
Ver original
  1. <script>
  2. $("#editor_ta").attr("value",strip_tags($("#editor_ta")[0].value));
  3.  
  4. function strip_tags(input, allowed) {
  5.   allowed = (((allowed || '') + '')
  6.     .toLowerCase()
  7.     .match(/<[a-z][a-z0-9]*>/g) || [])
  8.     .join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
  9.   var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
  10.     commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
  11.   return input.replace(commentsAndPhpTags, '')
  12.     .replace(tags, function($0, $1) {
  13.       return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
  14.     });
  15. }
  16. </script>

si lo hago en el firebug veo que me limpia el el texto y me devuelve una cadena sin tags html,
pero no se actualiza el CLEDITOR

como podria resolver esto?
  #4 (permalink)  
Antiguo 25/11/2014, 07:21
Avatar de dAvidcA  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/dev/
Mensajes: 73
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: Cleditor

Para modificar el texto del CLEDITOR usa:

Código Javascript:
Ver original
  1. $('#editor_ta').val('Mi nuevo texto').blur();

en tu caso:
Código Javascript:
Ver original
  1. $('#editor_ta').val( strip_tags($('#editor_ta').val()) ).blur();

No estoy contextualizado de lo que quieres hacer en general pero creo que debes tener en cuenta lo siguiente:

Si quieres limpiar de html el textarea y lo haces dentro del .bind('paste') debes tener en cuenta que justo en ese momento el CLEDITOR no tiene incluido el texto que llega en el 'portapapeles' (paste).

Para ver el texto que se está "pegando" debes incluir en el bind el 'evento' y desde ese 'evento' extraer el texto, ejemplo:

Código Javascript:
Ver original
  1. $(editorFrame).find('body').bind("paste", function(event) {
  2.     var dataPaste = event.originalEvent.clipboardData.getData('Text'); //obtener texto del portapapeles
  3.     alert("Texto a pegar: "+dataPaste);
  4. });

Saludos.
  #5 (permalink)  
Antiguo 25/11/2014, 09:14
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Cleditor

Hola
lo tengo que hacer es solo limpiar de html el texto que estoy pegando
el resto del texto deberia quedar intacto

Etiquetas: funcion, html, javascript, jquery
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:22.