Por razones desconocidas, jQuery siempre convierte todos los saltos de línea en el valor de una <textarea>
a un solo carácter. Es decir, si el navegador le da \r\n
para una nueva línea, jQuery se asegura de que sea solo \n
en el valor de retorno de .val()
. (En realidad, la razón probablemente no es "desconocida"; es probable que normalice los resultados en los navegadores, porque IE informa que las nuevas líneas tienen 2 caracteres de longitud).
Chrome y Firefox cuentan la longitud de las etiquetas <textarea>
de la misma manera los propósitos de "maxlength".
Sin embargo, la especificación HTTP insiste en que las líneas nuevas se representan como \r\n
. Por lo tanto, jQuery, webkit y Firefox todos obtienen esto mal. Cuando se publica el campo, ¡webkit y Firefox agregan correctamente las nuevas líneas!
El resultado es que "maxlength" en las etiquetas <textarea>
es bastante inútil si su código del lado del servidor realmente tiene un tamaño máximo fijo para un valor de campo.
Editar Esto sigue siendo un problema en 2015, al menos en Chrome 45.0.2454 e IE 11.0.9600.
Aquí está su respuesta con evidencia: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#concept-textarea-api-value –