Z nieznanych przyczyn, jQuery zawsze konwertuje wszystkie znaki nowej linii w wartość <textarea>
do pojedynczego znaku. Oznacza to, że jeśli przeglądarka przyznaje mu \r\n
dla nowej linii, jQuery upewnia się, że jest to tylko \n
w zwracanej wartości .val()
. (W rzeczywistości przyczyna prawdopodobnie nie jest "nieznana" - prawdopodobnie normalizuje wyniki w różnych przeglądarkach, ponieważ IE zgłasza, że znaki nowej linii mają długość 2 znaków.)
Chrome i Firefox obliczają długość tagów <textarea>
w ten sam sposób dla w celach "maksymalnej długości".
Jednak specyfikacja HTTP twierdzi, że nowe znaki są reprezentowane jako \r\n
. Tak więc, jQuery, webkit i Firefox wszystko to źle. Kiedy pole zostanie opublikowane, webkit i Firefox poprawnie dodają nowe linie!
Efekt jest taki, że "maksymalna długość" na znacznikach <textarea>
jest praktycznie bezużyteczna, jeśli kod po stronie serwera rzeczywiście ma ustalony maksymalny rozmiar dla wartości pola.
Edytuj To nadal jest problem w 2015 roku - przynajmniej w Chrome 45.0.2454 i IE 11.0.9600.
Oto twoja odpowiedź z dowodami: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#concept-textarea-api-value –