Foros del Web » Programando para Internet » ASP Clásico »

Problema al editar texto

Estas en el tema de Problema al editar texto en el foro de ASP Clásico en Foros del Web. Hola Cuando mis usuarios editas sus texto y por error escriben el carácter (<), no aparece el texto que le sigue hasta que no vuelve ...
  #1 (permalink)  
Antiguo 18/09/2008, 12:33
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Problema al editar texto

Hola

Cuando mis usuarios editas sus texto y por error escriben el carácter (<), no aparece el texto que le sigue hasta que no vuelve a aparece ese mismo carácter

Un ejemplo

Código HTML:
<%
Dim txt
txt= Request.Form("texto")
%>
<html>
<head>
</head>
<body>
<div><%=txt%></div>
<br />
<form action="x.asp" method="post">
<textarea name="texto" rows="20" cols="50"></textarea>
<br />
<input type="submit" value="Enviar" />
</form>
</body>
</html> 
Si en el textarea se introduce

Un <texto <b>editado</b>

En el div se muestra

Un editado

He de conseguir reemplazar (<) por (&lt;) o eliminarlo. No me sirve Replace ni escape. ¿Qué os parece si uso javascript? ¿Alguna sugerencia?

Gracias
__________________
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;" />
  #2 (permalink)  
Antiguo 18/09/2008, 13:07
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Pregunta Respuesta: Problema al editar texto

¿Qué sucede cuando utilizas Replace?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 18/09/2008, 14:20
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Problema al editar texto

Gracia por responder

El problema al usar Replace está en que cambiaría todos los <, de tal forma que en lugar de

Un <texto editado

Aparecería algo como

Un <texto <b>editado</b>

¿Qué te parece la idea de javascript para desactivar la tecla?, ¿quizás expresiones regulares?

Gracias de nuevo, cualquier idea .....
__________________
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;" />
  #4 (permalink)  
Antiguo 18/09/2008, 14:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Respuesta: Problema al editar texto

Me gusta la idea de usar expresiones regulares, con el objeto RegExp podríamos decirle que busque solo aquellas palabras que empiecen por un < pero que no terminen con ella y reemplazar por la entidad HTML.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 19/09/2008, 05:13
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Problema al editar texto

Veamos que sale

Gracias
__________________
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;" />
  #6 (permalink)  
Antiguo 21/09/2008, 16:42
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Respuesta: Problema al editar texto

mmm.... haber

si para poder utilizar el "mayor que" (>) o "menor que"(<)", es por que pondras alguna etiqueta para resaltar, por decirlo asi..... no ???

bueno, por que no intentas lo siguiente

utilizar un split, para el simbolo "<", logicamente seran pocos resultados o pocas divisiones y no te tomara tanto tiempo o sacrifico

dentro de cada elemento resultante, para poder evaluarlo como etiqueta, por logica debe existir un cierre de dicha etiqueta ">" y si en caso de cierre final debera empezar por "</" hasta ahorita todo marca normal... verdad?

entonces.... veamos....
Código ASP:
Ver original
  1. texto ="<esto es una prueba de <b>ilustracion</b>, de lo mismo que intentamos <h1> intentar</h1>, intentando lo mesmo que <font color="#00FFff">intentamos</font><, no creen????"
  2.  
  3. temporal = split(texto,"<")
  4. for each item in temporal
  5. if mid(item,2,1)<>"/" then
  6. if right(item,1)<>">" then
  7. item=replace(item,"<","")
  8. end if
  9. end if
  10. next
estare bien????
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #7 (permalink)  
Antiguo 22/09/2008, 15:09
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Problema al editar texto

Gracias Shiryu , lo probé y intenté hacerle algunas modificaciones, pero no fui capaz de hacer que resultará, así que he montado estas expresiones que "funcionan" a no ser que el usuario sea un zoquete

Código asp:
Ver original
  1. objRegExp.Pattern = "(<)([^>]+(/)?[^>])"  
  2. texto = objRegExp.Replace(texto, "&lt;$2")  
  3.  
  4. objRegExp.Pattern = "(&lt;)([^>]+>)"
  5. texto = objRegExp.Replace(texto, "<$2")  
  6.  
  7. objRegExp.Pattern = "(<)([^>]+<)"
  8. texto = objRegExp.Replace(texto, "&lt;$2")

Funciona con una cada como esta

Cita:
<esto es una prueba de <b>ilustracion</b>, de lo mismo que intentamos <h1> intentar</h1>, intentando lo mesmo que <font color="#00FFff">intent<amos</font><, no creen????
De nuevo gracias por vuestro interés y tiempo . Espero que a alguien le sea válido
__________________
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:09.