Yo tenía el mismo problema y trató de resolverlo con JavaScript. ¿Por qué no simplemente tomar el código HTML sugerido por Juan Mendes?
Bueno, es bastante simple: realmente no funciona el navegador cruzado, o al menos con Firefox 25 en Ubuntu, el número máximo de caracteres por línea parece estar limitado por el ancho del texto y, dependiendo del tamaño de la fuente, pude ingrese + -1 letra. Pero quería que el número de caracteres por línea se limitara a un valor específico, sin importar el ancho del área de texto. Así me ocurrió con este código:
var maxLength = 3;
$('#mytext').on('input focus keydown keyup', function() {
var text = $(this).val();
var lines = text.split(/(\r\n|\n|\r)/gm);
for (var i = 0; i < lines.length; i++) {
if (lines[i].length > maxLength) {
lines[i] = lines[i].substring(0, maxLength);
}
}
$(this).val(lines.join(''));
});
También he preparado un jsFiddle.Espero que esto ayude a alguien :)
Y al final sólo una breve explicación de cómo funciona este código:
- La función espera para uno de los siguientes eventos: entrada, el enfoque, keydown, keyup (se puede parecer un poco innecesario usar estos muchos eventos, pero probé mucho para encontrar esta combinación que funciona con navegador cruzado y siempre dispara, no importa si solo se ingresan letras individuales, la tecla se presiona continuamente o el texto se pega en el área de texto)
- obtiene el valor del área de texto
- y luego divide el área de texto en cada salto de línea en un nuevo elemento RRay
- el bucle for itera más de esta matriz y los controles para cada línea, respectivamente elemento de la matriz, si es superior a la antes de establecer maxLength
- si una línea excede el maxLength, la línea es "cortado" después de caracteres maxLength
- al final, cuando no hay una línea izquierda, que es más largo que los personajes maxLength, los elementos de la matriz se unen entre sí en una cadena de nuevo
EDIT: la única restricción que descubrí ahora, es que al entrar un carácter adicional al principio o dentro de la línea, el código "corta" la cadena al final y no donde los caracteres tienen sido agregado. Esto no importará en la mayoría de los casos, pero téngalo en cuenta :) De todos modos, no debería ser demasiado difícil cambiar esta función de forma apropiada, pero en la mayoría de los casos será una pérdida de recursos;)
¿Cómo se restringe por línea? –
aaah Lo entiendo ... usted está diciendo que hace más o menos dependiendo de la fuente que el usuario esté usando o si hace zoom in/out. Bueno, está bien ... puedes establecer la fuente y el tamaño inicialmente, pero si lo cambian de un complemento del navegador o a través de la configuración del navegador ... no hay mucho que puedas hacer al respecto. Excepto ... Supongo que al presionar una tecla se podría verificar la longitud actual y si alcanza un múltiplo de 72, se agrega automáticamente un \ n –