Ver Mensaje Individual
  #6 (permalink)  
Antiguo 17/02/2011, 14:28
posman
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 4 meses
Puntos: 57
Respuesta: Limitar caracteres en textarea

Si se puede hacer lo que tu quieres. Depende del evento que utilices para limitar el numero de caracteres.
Si utilizas onkeypress, el caracter ya se habra impreso y entonces tendrias que borrar el caracter que se escribio (si ya se llego al limite).

Si utilizas el evento onkeydown, este se ejecuta ANTES de que se imprima el caracter. Tendrias que revisar si ya se llego al limite y si es asi, entonces regresar un false al evento (o hacer que el evento no se propague con stopPropagation() o cancelBubble() ). De lo contrario regresa un true para que el evento continue.

Un inconveniente de utilizar onkeydown es que al presionar cualquier tecla (incluso suprimir, retroceso, control, alt, etc) tambien se ejecuta el evento. Y si al revisar si el limite de caracteres ya se rebaso, entonces detendrias el evento incluso si presionaras suprimir para borrar algun caracter.

Trate de hacer lo que quieres como ejercicio pero me tuve que ocupar en otras cosas. Te dejo el codigo que escribi aunque creo que todavia no funciona al 100%

Código HTML:
Ver original
  1. var maximo = 5;
  2. function presionar(e) {
  3.     var t = document.getElementById("texto").value.length;
  4.  
  5.     document.getElementById("total").innerHTML = t;
  6.  
  7.     var re = /[\w\s_]/g;
  8.     if ( !re.test(String.fromCharCode(e.keyCode)) )
  9.         return true;
  10.  
  11.     if ( t < maximo )
  12.         return true;
  13.     else
  14.         return false;
  15. }
  16. </head>
  17. <body onload="document.getElementById('texto').focus()">
  18. <textarea id="texto" onkeydown="return presionar(event)" cols="50" rows="5"></textarea>
  19. <br />
  20. <span id="total"></span> caracteres
  21. <input type="button" value="Limpiar" onclick="document.getElementById('texto').value=''" />
  22. </body>

Última edición por posman; 17/02/2011 a las 14:34