跳至主要内容

EOLs in Textarea

· 閱讀時間約 1 分鐘
ViPro

EOL (end of line) 在 textarea 中會被修改。

EOLs in Textarea

在 Textarea 中的 EOLs 都會被 format 為 \n (LF) ,而在 submit 後的 request 中為 \r\n (CRLF) 。

Demo:

此外 \t\u00A0(nbsp) 並不會受到影響。

textarea 總是將 eol 換為 \n (LF) :

(() => {
const textarea = document.createElement("textarea");
textarea.value = "\n\r\r\n";
console.log(textarea.value === "\n\n\n");
})();

FormData 本身不會改變值:

(() => {
const formData = new FormData();
formData.append("textarea", "\n\r\r\n");
console.log(formData.get("textarea") === "\n\r\r\n");
})();

但使用 ajax 請求後還是會被 format 成 \r\n (CRLF) :

(() => {
const xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
console.log(this.response); // "textarea": "\r\n\r\n\r\n"
};
xhttp.open("POST", "https://httpbin.org/post", true);
const formData = new FormData();
formData.append("textarea", "\n\r\r\n");
xhttp.send(formData);
})();

Reference: https://html.spec.whatwg.org/multipage/form-elements.html#the-textarea-element