По неизвестным причинам jQuery всегда преобразует все новые строки в значении <textarea>
в один символ. То есть, если браузер дает ему \r\n
для новой строки, jQuery гарантирует, что это просто \n
в возвращаемом значении .val()
. (На самом деле причина, вероятно, не «неизвестна»; вероятно, это нормализует результаты в разных браузерах, потому что IE сообщает, что новые строки имеют длину 2 символа.)
Chrome и Firefox одинаково считают длину тегов <textarea>
для целей «maxlength».
Однако спецификация HTTP настаивает на том, чтобы новые строки представлялись как \r\n
. Таким образом, jQuery, webkit и Firefox ошибаются. Когда поле опубликовано, webkit и Firefox правильно добавляют новые строки!
В результате «maxlength» в тегах <textarea>
практически бесполезна, если ваш код на стороне сервера действительно имеет фиксированный максимальный размер для значения поля.
Изменить Это все еще проблема в 2015 году — по крайней мере, в Chrome 45.0.2454 и IE 11.0.9600.
person
Pointy
schedule
05.04.2012