Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/11/2007, 05:25
Avatar de Wel
Wel
 
Fecha de Ingreso: marzo-2003
Mensajes: 77
Antigüedad: 21 años, 8 meses
Puntos: 0
Re: Acortar cadenas de texto

JavierB me esta surgiendo un problemita, y es que después de poner esto:

txt = document.forms[0].tuTextarea.value;
palabras = txt.split(' ');


"palabras", tiene un array de todas la palabras que compone "txt", excepto para cuando hay un retorno de línea, en cuyo caso la última palabra de la línea y la siguiente la considera como una sola.
si tengo:

"abc abc" en el textarea, entonces Palabras = ["abc","abc"] con lo cual si está contando bien, pero si en el textarea se escribe con salto de línea:
"abc abc"
"def def"
Palabras = ["abc","abc def","def"]


Por lo tanto si el tamaño máximo de caracteres fuese 5 (por ejemplo), esto me daría error, pues el segundo índice de "PALABRAS" es mayor de 5... y en la realidad no es así... ¿Existe la posibilidad de hacer algo parecido a eso?:

palabras = txt.split(" " or "\n")


Te pongo el código que tengo hecho, que funciona correctamente, (siempre que en el textarea no tenga saltos de línea en el que la última palabra de una línea y la primera de la siguiente no sean mayores que 10.)

Código HTML:
<HTML>
   <HEAD>
	<TITLE> New Document </TITLE>

	<script>
		 function Verificar(){
			var num_max_caracteres = 10;
			Mensaje = document.getElementById('formulario').mensaje.value;
			Vector_Palabras = Mensaje.split(" ");

			for (i=0;i<Vector_Palabras.length;i++){
				Num_Caracteres = Vector_Palabras[i].length
				if (Num_Caracteres > num_max_caracteres){window.alert("La "+(i+1)+"ª palabra que ha escrito : \n\n'"+Vector_Palabras[i]+"'\n\n es demasiado larga, tiene más de "+num_max_caracteres+" caracteres.\n\n¡¡¡ USE ESPACIOS EN BLANCO !!!.");return false}
			}	 
			return true;
		}
	</script>

   </HEAD>

   <BODY>


      <form name="formulario" method="post" onSubmit="return Verificar();">

		<textarea name="mensaje"></textarea>

		<input name="submit" type="submit" value="A&ntilde;adir">
      </form>

   </BODY>
</HTML>