これは、この質問から派生したものです: Chrome は、maxlength 属性を持つテキストエリアで文字数が間違っています
その質問では、実際には 2 つの ( )であるのに、 Javascript の改行は 1 文字で\r\n
あることがわかりました。なぜですか?
テストフィドル: http://jsfiddle.net/maniator/E527z/
これは、この質問から派生したものです: Chrome は、maxlength 属性を持つテキストエリアで文字数が間違っています
その質問では、実際には 2 つの ( )であるのに、 Javascript の改行は 1 文字で\r\n
あることがわかりました。なぜですか?
テストフィドル: http://jsfiddle.net/maniator/E527z/
理由は不明ですが、jQuery は常に a の値に含まれるすべての改行を<textarea>
1 文字に変換します。つまり、ブラウザーが\r\n
改行のためにそれを与える場合、jQuery はそれが\n
の戻り値にあることを確認します.val()
。(実際には、理由はおそらく「不明」ではありません。IE は改行の長さを 2 文字として報告するため、おそらくブラウザ間で結果を正規化するためです。)
<textarea>
Chrome と Firefox はどちらも、"maxlength" の目的でタグの長さを同じ方法でカウントします。
ただし、HTTP 仕様では、改行を として表すことを主張しています\r\n
。したがって、jQuery、webkit、および Firefox はすべてこれを誤解しています。フィールドが投稿されると、webkit と Firefox は正しく改行を追加します!
要するに、サーバー側のコードでフィールド値の最大サイズが実際に固定されている場合、タグの「maxlength」<textarea>
はほとんど役に立たないということです。
編集これは 2015 年でもまだ問題です - 少なくとも Chrome 45.0.2454 と IE 11.0.9600 では。