Sembra che, secondo le specifiche HTML5 , la proprietà value dell'elemento textarea debba restituire '\ r \ n' per una nuova riga:
Il valore dell'elemento è definito come il valore grezzo dell'elemento con la seguente trasformazione applicata:
Sostituisci ogni occorrenza di un carattere "CR" (U + 000D) non seguito da un carattere "LF" (U + 000A) e ogni occorrenza di un carattere "LF" (U + 000A) non preceduto da "CR" ( U + 000D), da una stringa di due caratteri composta da una coppia di caratteri U + 000D CARRIAGE RETURN "CRLF" (U + 000A).
Seguendo il collegamento a "valore" è chiaro che si riferisce alla proprietà del valore a cui si accede in javascript:
I controlli del modulo hanno un valore e una verifica. (Quest'ultimo viene utilizzato solo dagli elementi di input.) Vengono utilizzati per descrivere il modo in cui l'utente interagisce con il controllo.
Tuttavia, in tutti e cinque i principali browser (utilizzando Windows, 27/11/2015), se "\ r \ n" viene scritto in un'area di testo, "\ r" viene rimosso. (Per testare: var e = document.createElement ('textarea'); e.value = '\ r \ n'; alert (e.value == '\ n');) Questo è vero per IE dalla v9. Prima di allora, IE restituiva "\ r \ n" e converteva "\ r" e "\ n" in "\ r \ n" (che è la specifica HTML5). Quindi ... sono confuso.
Per sicurezza, di solito è sufficiente utilizzare "\ r? \ N" nelle espressioni regolari anziché solo "\ n", ma se la sequenza di nuova riga deve essere nota, è possibile eseguire un test come quello sopra riportato nell'app.