Foros del Web » Programando para Internet » Javascript »

Reemplazar caracteres

Estas en el tema de Reemplazar caracteres en el foro de Javascript en Foros del Web. Hola estoy intentando hacer un pequeño editor de textos para un formulario. recojo un dato del textarea con document.selection.createRange () a este le añado los ...
  #1 (permalink)  
Antiguo 05/09/2008, 11:10
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
Reemplazar caracteres

Hola estoy intentando hacer un pequeño editor de textos para un formulario.

recojo un dato del textarea con
document.selection.createRange () a este le añado los tags de strong, luego lo unico que consigo es crear un nuevo nodo con el resultado.

Pero lo que necesito es que recoja el texto del textarea (buscque el texto seleccionado y lo sustituya por la seleccion manipulada....

He probado con un replace(esto,otro) me da un error dejo el código a ver si alguine sabe como solucionar esto.......


function Selecciona()

{

var sel=document.selection.createRange ()
if (sel.text=='')


{var creasel=document.createTextNode('');}

else

{var creasel=document.createTextNode('<strong>'+sel.text+'</strong>');}








var tit=document.getElementById('areatxt');

tit.appendChild(creasel);



}
Este código me añade un nodo, cómo puedo coger el primer nodo remplazar el sel por el creasel y eliminar el antiguo nodo por el nuevo reemplazado.

Gracias
  #2 (permalink)  
Antiguo 06/09/2008, 02:51
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Reemplazar caracteres

Nadie puede sabe comopodria solucionar esto?

Creo qeu la cuestion es poder saber donde cae el puntero en el texto viejo y eliminarlo y luego poner el nuevo texto apartir el puntero antiguo.¿?¿?¿? seria algo así ??
  #3 (permalink)  
Antiguo 06/09/2008, 05:10
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Reemplazar caracteres

En otro post vi este link Introducción al javascript: http://www.librosweb.es/javascript/index.html

Y he encontrado las funciones para manipular cadenas.

Las funciones :
Buscar posicion del cursor podria ser: lastIndexOF()
Extraer una parte de la cadena : substring (nº,nº)

Así que me imagino que con lastIndexOf localizo las posiciones y las extraigo con substring.

Mi duda es como añado una cadena a la cadena existente???

A ver si alguien me ehca una mano.

Gracias
  #4 (permalink)  
Antiguo 06/09/2008, 08:20
Avatar de ugmaster  
Fecha de Ingreso: abril-2008
Ubicación: Veracruz, México
Mensajes: 73
Antigüedad: 16 años
Puntos: 1
Respuesta: Reemplazar caracteres

Bueno ... no entiendo del todo tu idea pero se me ocurre que crees una nueva cadena y en la nueva coloques solamente lo que deseas, por ejemplo

cadena1='Hola / como estas'
cadena2=' amigos!!!'

y quiero formar Hola amigos!!!
tal vez asi cadena4= cadena1.substring(0,cadena1.indexOf('/'))+cadena2;
y listo en cadena4 tengo lo deseado.
Ahora bien indexOf solo te da la posición de la primera ocurrencia, pero si colocas un indice despues de lo que buscas iniciara a partir de la pocision que le das.

Comento no entendi bien lo que preguntas pero espero te sirva.. y para reemplazar si se trata de un componente de texto pues solo asignala y si son TD de una tabla por ejemplo tendrias que aplicar un removechild y despues un appendChild

Saludos
  #5 (permalink)  
Antiguo 06/09/2008, 08:32
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Reemplazar caracteres

Gracias ugmaster.

La idea es....

en un Textarea se selecciona un texto. (eso lo consigo y lo manipulo recojo hola y lo transformo a <b>hola</b>)

Luego tengo que ver en el textarea cual fue el texto seleccionado y rempalzarlo por el manipulado.

Lo que me comentas podria ayudarme a buscar la posicion de donde estaba lo selecionado peor me parece que también vi ... algo como selectionStar().

La verdad es que con javascript voy un poco perdido ahora estoy empezando a estudiarlo y vien aquí me encuentro .

gracias
  #6 (permalink)  
Antiguo 07/09/2008, 10:19
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Reemplazar caracteres

Buneo nadie responde.... bien he encontrado la solución la pongo aquí por si alguien la necesita...

encontre el código para localizar la posición de la selección dentro del texto en esta web.....
http://the-stickman.com/web-developm...rnet-explorer/

luego pongo el código aquí el que me funciona, de momento solo funciona en Internet Explorer pero seguire buscando para que funcione en FireFox y Chrome.

var sel=document.selection.createRange ()
var texto1=sel.text;
var texto=sel.text;
if (texto=='')
{

var
texto='';

}

else
{
var




texto='<strong>'+texto+'</strong>';

}



var


tit=document.getElementById('areatxt');

var pilla=tit.childNodes[0].nodeValue;




// The current selection

var sel = document.selection.createRange();





// We'll use this as a 'dummy'

var stored_range = sel.duplicate();





// Select all text

stored_range.moveToElementText( tit );





// Now move 'dummy' end point to end point of original range

stored_range.setEndPoint( 'EndToEnd', sel );





// Now we can calculate start and end points

tit.selectionStart = stored_range.text.length - sel.text.length;
tit.selectionEnd = tit.selectionStart + sel.text.length;
var fin=sel.selectionEnd = tit.selectionStart + sel.text.length;
var inicio=sel.selectionStart = stored_range.text.length - sel.text.length;







var sTexto = pilla.substring(0, inicio) + texto + pilla.substr(fin);



tit.childNodes[0].nodeValue=sTexto;




si alguien sabe como hacer que funcione en firefox y chrome, se agradece.
  #7 (permalink)  
Antiguo 07/09/2008, 17:13
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Reemplazar caracteres

Bueno esto parece el POST de Palomo yo me lo guiso yo me lo como...



He encontrado una solución mejor y más sencilla que de momento me soluciona el tema, es para editar texto en negrita usando,
isContentEditable.

Aquí lo dejo esta en bruto pero funciona... he usado el Textarea para ve rcomo queda y si guarda bien el resultado, la idea es qeu lo guarde en un hidden y luego lo pasamos a la base de datos o donde sea...

se edita el texto en un div editable y si sales del div se guarda en el textarea (en un futuro en un hidden) cuando das al boton N2 se pone en negrita y se guarda el resulatado en el textarea (o hidden)

Esta sacado de otro post del foro este esl el post donde sale el autor del código más completo.... http://www.forosdelweb.com/f13/formato-textarea-232977/ yo lo he simplificado mucho y he creado la funcion par aque lo guarde en el textarea (o hidden).



Código:
 
<html> <head>
<title>
Intentando un Editor de texto en formulario 5/9/2008</title>
<link rel="StyleSheet"href="editotxt.css"type="text/css">
<script type="text/javascript"> function setAtributo(tipo){
if (oDiv.isContentEditable==true)
document.execCommand(tipo);
oDiv.focus();
var codigo = document.getElementById('oDiv'); pr=document.getElementById('areatxt'); codigo=codigo.innerHTML;
pr.childNodes[0].nodeValue=codigo;
}
function guarda ()
{ var codigo = document.getElementById('oDiv'); pr=document.getElementById('areatxt');
codigo=codigo.innerHTML;
pr.childNodes[0].nodeValue=codigo;
}
</script> </head>
<body>
<h1 id="c">Editor de texto</h1>
<input id="color"type="button"Value="Cambiar Texto"onClick="cambiarTexto()"/><br/>
<input id="color"type="button"Value=" N2 "onclick="setAtributo('Bold');"/><br/>
<form name="subform">
<textarea id="areatxt"name="TextoA"rows="10"cols="40">x</textarea>
</form>
<hr/>
<div id=oDivcontenteditableonblur="guarda()"ALIGN=leftSTYLE="height:400; width:100%;background-color:white; font-size:12px; font-family:verdana; padding:3; border:inset #99ccff; scrollbar-base-color:#99ccff; overflow=auto;"></div>
</body> </html>

Bueno es algo que me vuelto loco buscandolo y aquí esta para hacer un sencillísimo sistema para hacer un editor de textos para mejorar un formulario, ya se que ay muchos y muy guapos por la red para usar pero....

Funciona con: Internet Explorer, Chrome y Safari .
No Funciona con: Mozilla y Opera .

Última edición por Did_Web; 07/09/2008 a las 17:38
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 16:31.