Foros del Web » Programando para Internet » Javascript »

Duda

Estas en el tema de Duda en el foro de Javascript en Foros del Web. Estoy usando esto que me encontré en Foros del Web. O para especificar más en las FAQ's. El código es este: Código PHP:   // BBCode Functions ...
  #1 (permalink)  
Antiguo 22/04/2004, 23:28
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Duda

Estoy usando esto que me encontré en Foros del Web. O para especificar más en las FAQ's. El código es este:
Código PHP:
 // BBCode Functions
function storeCaret(text) {
 if (
text.createTextRange) {
  
text.caretPos document.selection.createRange().duplicate();
 }
}

function 
meter(text) {
 var 
postopic document.newsadmin.ampliacion;
  if (
postopic.createTextRange && postopic.caretPos) {
   var 
caretPos postopic.caretPos;      
   
caretPos.text caretPos.text.charAt(caretPos.text.length 1) == ' ' ?
    
text ' ' text;
  }else
   
postopic.value += text;
   
postopic.focus(caretPos)
}

function 
codigo(accion) {
  switch(
accion) {
   case 
"url":
    
url prompt("URL de el Enlace""http://");
     if(
url) {
      
url="[a]"+url+"[/a]";
      
meter(url);
     }
     break;
    case 
"bold":
     
negras prompt("Texto en Negritas""");
     if(
negras) {
      
negras="[b1]"+negras+"[/b1]";
      
meter(negras);
     }
     break;
    case 
"italics":
     
italics prompt("Texto en Italicas""");
     if(
italics) {
      
italics="[i1]"+italics+"[/i1]";
      
meter(italics);
     }
     break;
    case 
"underline":
    
underline prompt("Texto subrayado""");
     if(
underline) {
      
underline ="[u1]"+underline+"[/u1]";
      
meter(underline);
     }
     break; 
    case 
"code":
     
code="[code1]  [/code1]";
     
meter(code);
     break;
    case 
"quote":
     
quote="[quote1]  [/quote1]";
     
meter(quote);
     break;
    case 
"right":
     
rg="[rg]  [/rg]";
     
meter(rg);
     break; 
    case 
"left":
     
lf="[lf]  [/lf]";
     
meter(lf);
     break;
    case 
"center":
     
cn="[cn]  [/cn]";
     
meter(cn);
     break; 
    case 
"justify":
     
js="[js]  [/js]";
     
meter(js);
     break;
    case 
"quote":
     
js="[quote1]  [/quote1]";
     
meter(js);
     break; 
    default:
     
meter(accion);
     break;
   }
  }

function 
textCounter(fieldcountfieldmaxlimit) {
  if (
field.value.length maxlimit)
   
field.value field.value.substring(0maxlimit);
  else 
   
countfield.value maxlimit field.value.length;

la cosa es que todo me funciona perfecto pero cuando llamo al case: code, quote, right, left, center, justify lo que me hace es que me elimina el contenido del textarea y en su lugar me pone:
Código PHP:
 [code1] [/code1//para el caso de code
 
[quote1] [/quote1//para el caso de quote 
y lo que quiero hacer que me aparezca pero antes y después del texto seleccionado. Por ejemplo, mi texto es:
Cita:
texto txtxtxtxtxtxtxtxtxtxtxtxtxtx
si le doy click a quote me hace esto:
Cita:
[quote1][/quote1]
y lo que quiero que me haga es:
Cita:
[quote1]texto txtxtxtxtxtxtxtxtxtxtxtxtxtx[/quote1]
Lo otro es que también tengo unos selects cuyo contenido es color, tamaño de fuente y tipo de fuente. Y me pasa lo mismo. Quiero ponerlas en el contenido del textarea de esta forma:
Cita:
<font-family:Tahoma><font-size:10pt><font:color:#00000>texto txtxtxtxtxtxtxtxtxtxtxtxtxtx</font></font></font>
La otra duda es como puedo alinear el texto marcado a la derecha o a la izquierda según el usuario haya formateado(opciones: derecha, izquierda, centro, justificado). Me hago entender??

PD: He cambiado quote por quote1, code por code1, bold por b1, italic por i1, subrayado por s1 para que no se cnfunda con FDW
Salu2
__________________
Ing. Reynier Pérez Mira

Última edición por Reynier; 22/04/2004 a las 23:34
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 09:39.