Foros del Web » Programando para Internet » Javascript »

Formato texto donde esté el cursor en editor de texto

Estas en el tema de Formato texto donde esté el cursor en editor de texto en el foro de Javascript en Foros del Web. Buenos días a todos, Llevo leyendo este foro mucho tiempo ya, y me ha ayudado en multitud de ocasiones. Pero ahora tengo un problema que ...
  #1 (permalink)  
Antiguo 27/08/2009, 04:16
 
Fecha de Ingreso: agosto-2009
Mensajes: 2
Antigüedad: 14 años, 8 meses
Puntos: 0
Formato texto donde esté el cursor en editor de texto

Buenos días a todos,

Llevo leyendo este foro mucho tiempo ya, y me ha ayudado en multitud de ocasiones. Pero ahora tengo un problema que no he encontrado, motivado también porque soy bastante profano en javascript y html, y me he visto obligado a registrarme, aunque ya aprovecharé y seguiré rondando por aquí, aunque en vez de manera anónima lo haré bajo un nick.

Estoy haciendo un editor de texto utilizando un div editable, y tiene sus funciones negrita, cursiva, subrayado, alieando, y demás (la mayoría sencillitas).
Funciona todo estupendamente, pero tengo que conseguir un detalle que he buscado y no he encontrado: si el cursor (la barrita que parpadea, no el puntero de ratón) está en una parte del texto que va a escribir en negrita, se debería sombrear el botón de negrita. Y lo mismo con el alineado y con todo. Basicamente, es lo que hace el famoso Word.

¿Hay alguna forma de saber qué formato tendría el texto que se introduciría y sombrear los botones según el caso? ¿O es impepinable averiguar la posición y calcular los tags a la izquierda de la posición para saber el formato?

Espero que se me entienda la pregunta, que ya dije que soy bastante profano
  #2 (permalink)  
Antiguo 27/08/2009, 07:16
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Formato texto donde esté el cursor en editor de texto

Hola

Mira a ver si esto es lo que buscas

Código javascript:
Ver original
  1. <html>
  2. <head>
  3. <style type="text/css">
  4. #tabla td {background-color:#FFFFFF;}
  5. </style>
  6. <script type="text/javascript">
  7. window.onload = function () {
  8. var elementos = document.getElementById("tabla").getElementsByTagName("td");
  9.     for (var i=0;i < elementos.length; i++)  {
  10.        
  11.         elementos[i].onclick = Celda;
  12.         elementos[i].onmouseover = Celda;
  13.         elementos[i].onmouseout = Celda;
  14.            
  15.         }
  16.  
  17. }
  18.  
  19. function Celda(evento) {
  20. var evento = evento || window.event;
  21.     switch(evento.type) {
  22. case 'mouseover':
  23.     //this.style.backgroundColor = ((this.style.backgroundColor == '#ff0000') || (this.style.backgroundColor == 'rgb(255, 0, 0)'))   ? '#FFFF00' : '#CCFF66' ;
  24. //alert(this.style.backgroundColor);
  25.     break;
  26.  
  27.  
  28. case 'mouseout':
  29.     this.style.backgroundColor = ((this.style.backgroundColor == '#ccffcc') || (this.style.backgroundColor == 'rgb(204, 255, 102)')) ? '#FFFFFF' : '#FF0000';
  30. //alert(this.style.backgroundColor);
  31.     break;
  32.  
  33.  
  34. case 'click':
  35.     this.style.backgroundColor = ((this.style.backgroundColor ==  '#ccffcc') || (this.style.backgroundColor == 'rgb(204, 255, 102)')) ? '#FF0000' : '#CCFF66';
  36. //alert(this.style.backgroundColor);
  37.     break;
  38.   }
  39. }
  40.  
  41.  
  42. </script>
  43. </head>
  44. <body>
  45. <table border="1" id="tabla">
  46. <tr>
  47. <td>celda1</td>
  48. <td>celda2</td>
  49. <td>celda3</td>
  50. <td>celda4</td>
  51. <td>celda5</td>
  52. <td>celda6</td>
  53. <td>celda7</td>
  54. </tr>
  55. </table>
  56. </body>
  57. </html>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 27/08/2009, 07:50
 
Fecha de Ingreso: agosto-2009
Mensajes: 2
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Formato texto donde esté el cursor en editor de texto

Ante todo, muchas gracias por responder.

Mi "problema" viene dado porque soy incapaz de controlar qué botón se debe quedar marcado o desmarcado cuando el formato cambia sin pulsar los botones de edición.

Esto es, tengo el siguiente texto:

"Colorín colorado, este cuento se ha acabado"

Si selecciono la palabra 'colorado' y la marco en negrita, el texto visualmente sería

"Colorín colorado, este cuento se ha acabado".

Lo que yo quiero es, si el cursor estuviera en

"Colorín colorad|o, este cuento se ha acabado" (la barra vertical)

estuviera sombreado el botón de la acción de marcarlo en negrita. Si con las flechitas de dirección o con el propio ratón desplazo el cursor

"Colorín colorado, este cu|ento se ha acabado"

controlar que estoy fuera de la parte del texto en negrita y por tanto desmarcar automáticamente el botón de negrita. Me gustaría saber si esto lo puedo conseguir por algún atributo del campo de texto, del cursor; o tengo que calcular la posición del cursor (barrita vertical) en el texto y ver por los tags que tenga a su izquierda si tengo que dejar marcado el botón o no. O sea, mi problema no es cómo cambiar el color del botón, si no cuándo cambiarlo.

Espero haberme explicado.
  #4 (permalink)  
Antiguo 27/08/2009, 12:11
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Formato texto donde esté el cursor en editor de texto

Hola

Ahora te he entendido. No creo que se pueda hacer con javascript. Tampoco se si con otro lenguaje se podría. De cualquier modo ¿no te parece que es buscarle tres pies al gato?

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 00:36.