Cuenta los caracteres escritos en un textarea

  • Por
Script en Javascript que realiza la cuenta de los caracteres que se han escrito en un campo de formulario textarea, al mismo tiempo que se están escribiendo.
El diseño de este script fue motivado por la necesidad de hacer la típica caja para enviar mensajes SMS desde Internet. El tamaño máximo de un mensaje SMS de móvil es de 160 caracteres, con lo que es muy útil que la propia página te informe sobre el número de caracteres que se llevan escritos en el mensaje, para que el interesado no se pase del máximo permitido.

El funcionamiento es muy sencillo de entender, pero en cualquier caso podemos ver el script en marcha para saber exactamente qué nos proponemos.

El formulario

La página presentará un formulario con dos campos. El primero con el textarea donde el usuario escribirá el mensaje y el segundo, un campo de texto donde mostraremos en todo momento los caracteres escritos.

El único detalle a tener en cuenta relacionado con Javascript es el par de eventos que tenemos definidos dentro del campo textarea, que sirven para llamar a la función que realiza la cuenta de los caracteres en el momento que el usuario presiona o suelta las teclas. Concretamente se utiliza el evento onKeyDown para definir las acciones a realizar cuando se aprete la tecla y onKeyUp, para definir acciones a ejecutar cuando se suelta la tecla apretada.

<form action="#" method="post">
<table>
<tr>
    <td>Texto:</td>
    <td><textarea cols="40" rows="5" name="texto" onKeyDown="cuenta()" onKeyUp="cuenta()"></textarea></td>
</tr>
<tr>
    <td>Caracteres:</td>
    <td><input type="text" name=caracteres size=4></td>
</tr>
</table>
</form>

El script que cuenta caracteres

Con el formulario y el par de eventos introducidos tenemos todo lo necesario para que se cuenten -y recuenten- los caracteres cada vez que el visitante, situado sobre el textarea, pulsa sobre las teclas, es decir, cada vez que se escribe texto en el textarea. Ahora simplemente nos queda definir la función que se encarga de realizar la cuenta propiamente dicha y situarla en el otro campo de texto del formulario.

<script>
function cuenta(){
       document.forms[0].caracteres.value=document.forms[0].texto.value.length
}
</script>

Puede que a muchos haya sorprendido la sencillez del script, pero es que no hace falta más.

La propiedad value del textarea contiene el texto escrito y a su vez, la propiedad length guarda el número de caracteres de dicho texto. Así, document.forms[0].texto.value.length equivale al número de caracteres introducidos dentro del textarea. Este valor se asigna al contenido del campo de texto del formulario donde guardamos el número de caracteres, mediante la propiedad value del campo: document.forms[0].caracteres.value.

Con todo ello, se mostrará en el campo de texto el número de caracteres del textarea. Se puede ver el ejemplo en una página aparte.

Esperamos que este script haya solucionado vuestras necesidades para llevar la cuenta de los caracteres escritos en el textarea. Si deseamos además restringir el textarea para que no se pueda escribir más que un número de caracteres determinado, puedes continuar esta lectura con el artículo Evitar que un textarea sobrepase un número de caracteres permitidos.

Referencias: Este ejemplo que hemos visto es bastante sencillo y se puede hacer con Javascript sin la utilización de librerías adicionales. Sin embargo puede mejorarse un poco, ganar sencillez y potenciar la reutilización del código si utilizamos un framework como jQuery o Mootools. Puedes verlo en los artículos:

Autor

Miguel Angel Álvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Manuel

27/1/2004
Es sobre el artículo del JavaScript que cuenta los carácteres, me parecio muy bueno solo le falto algo importante, es la limitación, osea, máximo 160 caráctereses pero una vez se alcanza este valor se debe prohibir seguir escribiendo, esto es basico, ami personalmente me interesa así no solo para mensajes SMS sino para muchas otras cosas,

Saludos,

Jorge

27/1/2005
Para contar los caracteres y además limitar que el usuario no meta más de los máximos que hemos establecido, tenemos este script. El ejemplo tiene como máximo 125 caracteres

<html>
<head>
<SCRIPT language="JavaScript" type="text/javascript">

function contador (campo, cuentacampo, limite) {
if (campo.value.length > limite) campo.value = campo.value.substring(0, limite);
else cuentacampo.value = limite - campo.value.length;
}

</script>
</head>
<body>
<center>
<form name="form1">
sólo puedes entrar 125 caracteres.
<textarea name="mensaje" wrap=physical cols="28" rows="4" onKeyDown="contador(this.form.mensaje,this.form.remLen,125);" onKeyUp="contador(this.form.mensaje,this.form.remLen,125);"></textarea>
<input type="text" name="remLen" size="3" maxlength="3" value="125" readonly>te quedan todavía
</form>
</center>
</body>
</htm>

Ricardo Soto

24/12/2006
Yo ingreso varios campos pero uno deben tener 150 caracteres, al validarlo puede que uno está mal digitado, entonces solo corrijo el que está malo pero este textarea me borra el texto, no me funciona bien el request.form, que debo hacer

ariel

12/9/2011
consulta
no se porque en algunas paginas donde lo trate de utilizar no funciona, deberia funcionar en cualkier pagina, sin importar el codigo que esta contenga??

Ivan Espinoza

24/2/2012
Tamaño maximo
Buenas excelete post debo agregar que si deseamos limitar la cantidad de caracteres que pueden escribir en el textarea hay una propiedad maxlenght y basta con eso no porque complicar las cosas...

<textarea name="texto" cols="40" rows="5" id="texto" maxlength="160" onKeyDown="cuenta()" onKeyUp="cuenta()">

Saludos.-

JJ

08/4/2013
FUNCIONA
Después de buscar mucho en Internet, he encontrado lo que necesitaba, y el código es realmente sencillo.
Gracias.