[英]Why does Javascript only count carriage returns as one character when it is two?
這是這個問題的一個分支: Chrome counts characters wrong in textarea with maxlength attribute
在那個問題中發現Javascript 計數回車是一個字符,而實際上它是兩個 ( \r\n
) ,這是為什么呢?
出於未知原因,jQuery 始終將<textarea>
值中的所有換行符轉換為單個字符。 也就是說,如果瀏覽器給它\r\n
作為換行符,jQuery 確保它只是.val()
的返回值中的\n
。 (實際上,原因可能不是“未知”;可能是為了跨瀏覽器規范化結果,因為 IE 將換行符報告為 2 個字符長。)
出於“最大長度”的目的,Chrome 和 Firefox 都以相同的方式計算<textarea>
標簽的長度。
但是,HTTP 規范堅持將換行符表示為\r\n
。 因此,jQuery、webkit 和 Firefox 都弄錯了。 字段投遞時,webkit和Firefox正確加了換行!
結果是,如果您的服務器端代碼確實具有固定的字段值的最大大小,則<textarea>
標記上的“maxlength”幾乎毫無用處。
編輯這在 2015 年仍然是一個問題——至少在 Chrome 45.0.2454 和 IE 11.0.9600 上是這樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.