Per ragioni sconosciute, jQuery converte sempre tutte le nuove righe nel valore di un <textarea>
ad un singolo carattere. Cioè, se il browser lo dà \r\n
per una nuova riga, jQuery si assicura che sia solo \n
nel valore restituito di .val()
. (In realtà, la ragione probabilmente non è "sconosciuta", ma è probabilmente per normalizzare i risultati attraverso i browser, perché IE segnala le nuove righe con 2 caratteri.)
Chrome e Firefox contano entrambi la lunghezza dei tag <textarea>
allo stesso modo per gli scopi di "lunghezza massima".
Tuttavia, la specifica HTTP insiste sul fatto che la nuova riga sia rappresentata come \r\n
. Pertanto, jQuery, webkit e Firefox si sbagliano tutti. Quando il campo è pubblicato, webkit e Firefox aggiungono correttamente le nuove linee!
Il risultato è che "la lunghezza massima" sui tag <textarea>
è praticamente inutile se il codice sul lato server ha una dimensione massima fissa per un valore di campo.
Edit Questo è ancora un problema nel 2015 - almeno su Chrome e IE 45.0.2454 11.0.9600.
Ecco la tua risposta con le prove: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#concept-textarea-api-value –