Como bien es sabido, en las especifiaciones de HTML (4.01), el atributo maxlength no está definido para el elemento TEXTAREA, al contrario del elemento INPUT que si que lo contempla en su lista de atributos. Eso significa que el control del máximo de caracteres permitidos por un elemento Textarea debe ser implementado a posteriori por el desarrollador (o los desarrolladores) del sito web que desea aplicarlo.
Harto de encontrarme por enésima vez con el mismo problema, he desarrollado una pequeña función en jQuery que resuelve el problema permitiendo aplicar el atributo maxlength a un Textarea. He aquí la función:
function textarea () {
var maximos = new Array ();
$("textarea").attr("maxlength", function (i) {
if (maximos[i] = this.getAttribute('maxlength')) {
$(this).keypress(function(event) {
return ((event.which == 8) ||(event.which == 9) || (this.value.length < maximos[i]));
})}});
}
Y he aquí una pequeña explicación del script:
1. Declaramos el array donde guardaremos los valores del maxlength de todos los textarea de la página
var maximos = new Array ();
2. Recorremos todos los elementos textarea de la página y nos guardamos el valor del atributo maxlength de cada uno
$("textarea").attr("maxlength", function (i) {
if (maximos[i] = this.getAttribute('maxlength')) {
3. Definimos una acción para el evento KeyPress en los textarea que tengan atributo maxlength $(this).keypress(function(event) {
4. Escribimos en el textarea cuando la tecla sea “borrar” o “tabulador” o si aún no hemos llegado al valor de maxlength
return ((event.which == 8) || (event.which == 9) || (this.value.length < maximos[i]));
Para una mejor comprensión del procedimiento puedes consultar este ejemplo práctico.
Este script utilitza jQuery 1.2.1, es no intrusivo, se ejecuta en el lado cliente y está inspirado en el método de limitación de caracteres utilizado por Twitter.
Mira’t aquest exemple:
http://www.quirksmode.org/dom/maxlength.html
Podràs fer el mateix sense carregar Jquery.
Merci Oriol, no coneixia aquesta solució que esmentes. El codi resulta lleugerament més complex però és una bona opció en el cas de que la pàgina no utilitzi jQuery enlloc més.
“… el atributo maxlength no está definido para el elemento TEXTAREA” y para ser validado por el W3C tampoco puede estar dicho campo incluido en el HTML, no?
En el caso de que alguien haga copy & paste de texto en el textarea de tu ejemplo, se puede ‘saltar’ libremente las restricciones ¿?
P.D. Me intimida el icono de las gafas en medio de la página.
P.D2. M’ha fet gràcia trobar el teu blog xDD
Asi es, con un simple copy paste queda totalmente en desuso la clase.
buenos dias que tal, as solucionado el siguiente problema?
en el cual te referias a lo de copiar y pegar en un text area?
PSI
“… el atributo maxlength no está definido para el elemento TEXTAREA” y para ser validado por el W3C tampoco puede estar dicho campo incluido en el HTML, no?
En el caso de que alguien haga copy & paste de texto en el textarea de tu ejemplo, se puede ‘saltar’ libremente las restricciones ¿?
P.D. Me intimida el icono de las gafas en medio de la página.
P.D2. M’ha fet gràcia trobar el teu blog xDD
mucha gracias
hola creo que la mejor forma es escribir un aviso al lado que informe el max de caracteres y validar esto por el lado del servidor con php por ejemplo, bueno a mi me sirvió!