Ответ 1
По неизвестным причинам jQuery всегда преобразует все символы новой строки в значение a <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.