Foros del Web » Programando para Internet » Javascript »

Seleccionar frase y colocar BBCodes

Estas en el tema de Seleccionar frase y colocar BBCodes en el foro de Javascript en Foros del Web. Hola a todos. No sé muy bien si este tema va aquí porque no estoy seguro de si se hace o no en este lenguaje ...
  #1 (permalink)  
Antiguo 25/11/2013, 10:03
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 7 meses
Puntos: 5
Seleccionar frase y colocar BBCodes

Hola a todos.

No sé muy bien si este tema va aquí porque no estoy seguro de si se hace o no en este lenguaje o sus derivados pero bueno, si sois tan amables de moverlo si sabéis a lo que me refiero les estaré igual de encantado a los moderadores.

Lo que querría es que al seleccionar una parte de un texto osea así:



Y al darle a un botón para ponerla en negrita, los BBCode "" se pusieran justo entre el trozo seleccionado. Este mismo foro lo hace y muchos otros también, pero no tengo ni idea de como hacerlo.

Muchas gracias por su ayuda.
  #2 (permalink)  
Antiguo 25/11/2013, 10:37
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Seleccionar frase y colocar BBCodes

Esto te ayudará:

http://stackoverflow.com/questions/6...ent-and-replac

  #3 (permalink)  
Antiguo 25/11/2013, 12:25
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 7 meses
Puntos: 5
Respuesta: Seleccionar frase y colocar BBCodes

Vale, muchas gracias PHPeros, intenta ayudarme a comprender el código please

Lo que tengo es esto:
Código Javascript:
Ver original
  1. function getSelectionHtml() {
  2.     var html = "";
  3.     if (typeof window.getSelection != "undefined") {
  4.         var sel = window.getSelection();
  5.         if (sel.rangeCount) {
  6.             var container = document.createElement("div");
  7.             for (var i = 0, len = sel.rangeCount; i < len; ++i) {
  8.                 container.appendChild(sel.getRangeAt(i).cloneContents());
  9.             }
  10.             html = container.innerHTML;
  11.         }
  12.     } else if (typeof document.selection != "undefined") {
  13.         if (document.selection.type == "Text") {
  14.             html = document.selection.createRange().htmlText;
  15.         }
  16.     }
  17.     alert(html);
  18. }

Pero para coger la posición y ponerle un stringo con "[*b]" al principio y ponerle "[*/b]" (sin los *) al final como sería. Porque a lo más que llego con este código es a coger el HTML (que ya es un avance jeje), pero me pierdo al intentar hacer que lo que te digo arriba.

Muchas gracias
  #4 (permalink)  
Antiguo 25/11/2013, 14:26
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Seleccionar frase y colocar BBCodes

Buff, la verdad es que has tocado un tema puramente difícil

He buscado más en internet y parece que ya se discutió aquí, además con el BBCode incluido.

Una vez más StackOverflow nos salva!
  #5 (permalink)  
Antiguo 25/11/2013, 14:38
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Seleccionar frase y colocar BBCodes

Deja los temas puramente difíciles para los que sabemos programar, phperos.

http://jsfiddle.net/4bthd/

Código HTML:
Ver original
  1. <button id="btnNegritas"><b>b</b></button>
  2. <button id="btnCursiva"><i>i</i></button>
  3. <button id="btnSubrayado"><u>u</u></button>
  4. <br/>
  5. <textarea id="campo"></textarea>

Código Javascript:
Ver original
  1. window.onload=function(){
  2.     var Editor={
  3.         textarea:document.getElementById("campo"),
  4.         negritas:document.getElementById("btnNegritas"),
  5.         cursiva:document.getElementById("btnCursiva"),
  6.         subrayado:document.getElementById("btnSubrayado"),
  7.         insertar:function(bbcode){
  8.             var texto=Editor.textarea.value,
  9.                 inicio=Editor.textarea.selectionStart,
  10.                 fin=Editor.textarea.selectionEnd;
  11.            
  12.             texto=texto.slice(0,inicio)+"["+bbcode+"]"+texto.slice(inicio,fin)+"[\\"+bbcode+"]"+texto.slice(fin);
  13.             Editor.textarea.value=texto;
  14.         }
  15.     };
  16.     Editor.negritas.onclick=function(){
  17.         Editor.insertar("b");
  18.     };
  19.     Editor.cursiva.onclick=function(){
  20.         Editor.insertar("i");
  21.     };
  22.     Editor.subrayado.onclick=function(){
  23.         Editor.insertar("u");
  24.     };
  25. };

Básicamente el código es una tontería, escrito en 5 minutos. Sólo es necesario saber cómo se cortan cadenas en javascript y cómo se recupera el texto seleccionado de cualquier elemento.
  #6 (permalink)  
Antiguo 25/11/2013, 15:44
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 7 meses
Puntos: 5
Respuesta: Seleccionar frase y colocar BBCodes

Cita:
Iniciado por marlanga Ver Mensaje
Deja los temas puramente difíciles para los que sabemos programar, phperos.

http://jsfiddle.net/4bthd/

Código HTML:
Ver original
  1. <button id="btnNegritas"><b>b</b></button>
  2. <button id="btnCursiva"><i>i</i></button>
  3. <button id="btnSubrayado"><u>u</u></button>
  4. <br/>
  5. <textarea id="campo"></textarea>

Código Javascript:
Ver original
  1. window.onload=function(){
  2.     var Editor={
  3.         textarea:document.getElementById("campo"),
  4.         negritas:document.getElementById("btnNegritas"),
  5.         cursiva:document.getElementById("btnCursiva"),
  6.         subrayado:document.getElementById("btnSubrayado"),
  7.         insertar:function(bbcode){
  8.             var texto=Editor.textarea.value,
  9.                 inicio=Editor.textarea.selectionStart,
  10.                 fin=Editor.textarea.selectionEnd;
  11.            
  12.             texto=texto.slice(0,inicio)+"["+bbcode+"]"+texto.slice(inicio,fin)+"[\\"+bbcode+"]"+texto.slice(fin);
  13.             Editor.textarea.value=texto;
  14.         }
  15.     };
  16.     Editor.negritas.onclick=function(){
  17.         Editor.insertar("b");
  18.     };
  19.     Editor.cursiva.onclick=function(){
  20.         Editor.insertar("i");
  21.     };
  22.     Editor.subrayado.onclick=function(){
  23.         Editor.insertar("u");
  24.     };
  25. };

Básicamente el código es una tontería, escrito en 5 minutos. Sólo es necesario saber cómo se cortan cadenas en javascript y cómo se recupera el texto seleccionado de cualquier elemento.
Muchísimas gracias he hecho unos cuantos cambios para adaptarlo a lo que necesito y me funciona a la perfección. ¡Gracias por tu ayuda!

Cita:
Iniciado por PHPeros Ver Mensaje
Buff, la verdad es que has tocado un tema puramente difícil

He buscado más en internet y parece que ya se discutió aquí, además con el BBCode incluido.

Una vez más StackOverflow nos salva!
Muchas gracias por intentarlo de todas formas, me sirvió tu anterior código para otras cosas Saludos.

Etiquetas: frase
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 10:31.