2012-04-05 42 views
12

這是這個問題的一個分支:Chrome counts characters wrong in textarea with maxlength attribute爲什麼Javascript只在兩個時間內將回車計爲一個字符?


在這個問題發現Javascript counts carriage returns are one character when in fact it is two (\r\n),這是爲什麼?

測試小提琴:http://jsfiddle.net/maniator/E527z/

+4

下面是你的答案與證據:http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#concept-textarea-api-value – 2012-04-05 15:47:01

回答

22

不知什麼原因,jQuery的轉換總是在<textarea>的單個字符的值的所有換行符。也就是說,如果瀏覽器給它一個換行符\r\n,jQuery確保返回值爲.val()\n。 (其實原因可能不是「未知」;它可能會跨瀏覽器標準化結果,因爲IE報告換行符爲2個字符長)。

Chrome和Firefox都統計了<textarea>標籤的長度「maxlength」的目的。

但是,HTTP規範堅持認爲換行符表示爲\r\n。因此,jQuery,webkit和Firefox都會出錯。在發佈該字段時,webkit和Firefox會正確添加換行符!

結果是,如果您的服務器端代碼真的具有固定的字段值最大值,那麼<textarea>標籤上的「maxlength」幾乎沒有用處。

編輯這仍然是2015年的問題 - 至少在Chrome 45.0.2454和IE 11.0.9600上。

+3

「結果如果您的服務器端代碼的字段值確實具有固定的最大值,那麼