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ñadir">
</form>
</BODY>
</HTML>