Prueba con esta... lo que pasa es que deja el último caracter puesto... y no debería. En la variable maximo indicas cual es el número máximo de caracteres.
Código PHP:
<html>
<head>
<title>Untitled</title>
<script>
maximo=5
function contar(continente){
letras=0;
contenido=continente.value;
for(a=0;a<contenido.length+1;a++){
if(letras>maximo){return false}
if(contenido.charAt(a)!=" "){letras+=1;}
continente.value=contenido.substring(0,a);}
}
</script>
</head>
<body>
<textarea onkeydown="contar(this)" cols="20" rows="20" name="texto"></textarea>
</body>
</html>