Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/03/2002, 16:09
Avatar de Kaopectate
Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: meter texto con un boton a un textbox

Cuando tu escribes tu pregunta en el foro, estás llenando un textbox normal con tu texto, adicionalmente en ese textbox se pueden insertar marcas sin ningún significado HTML, pero que permitirán a un programa posterior saber que en ese sitio debe ser insertado un comando HTML ([codigo.], [enlace.], ...).

Cuando una pregunta (o respuesta) es mostrada en una página, lo mas probable es que se esté mostrando como código HTML dentro de una celda, por lo que una marce [b.] se transforma en un comando <b>, etc.

En resumen, un textarea está hecho para contener texto, si colocas en él un comando HTML, como <br>, <b>, etc., se va a mostrar el comando en si, no su efecto.

Para que al mostrar lo que el usuario escribió puedas hacer cosas como resaltar, o poner itálicas, debes insertar marquitas en dicho texto que te permitan manualmente insertar los comandos HTML correspondientes.

Dicho esto, pasemos a lo práctico:

- Tienes un textarea (llamado por ejemplo, txt).
- Tienes un botón para bold (llamado bld).
<input type="button" name="bld" value="Negritas" onclick="insertaBld()">

Tienes una función que maneja el botón, que va a insertar las marcas [b.] y [/b.] en tu textarea:

function insertaBld(){
document.formulario.txt.value += "[b.] [/b.]";
}

Para procesar el resultado, haces algo asi:

var texto = document.formulario.txt.value;
while (texto.indexOf("[b.]") != -1){
texto = texto.substr(0, texto.indexOf("[b.]") - 1) + "<b>" + texto.substr(texto.indexOf("[b.]") + 3);
}
while (texto.indexOf("[/b.]") != -1){
texto = texto.substr(0, texto.indexOf("[/b.]") - 1) + "<b>" + texto.substr(texto.indexOf("[/b.]") + 4);
}

Para mostrar el resultado, haces algo asi:

document.writeln("<table><tr>< td>");
document.writeln(texto);
document.writeln("</td></tr></table>");

Suerte.