3

このコードを Chrome でテストしたところ、改行に関するバグがあるようです。実際にすべての文字を使用する前に、maxlength に達しています。

var ta = document.getElementById('myText');

document.getElementById('max').innerHTML = ta.maxLength;

setInterval(function() {
    document.getElementById('count').innerHTML = ta.value.length;
}, 250);
<textarea id="myText" maxlength="200" style="width:70%;height:130px">
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s
Type more words here...
</textarea>

<div>
    Char Count <span id="count">0</span>/<span id="max">0</span>
</div>

テキストエリアの文字数を正確に取得するにはどうすればよいですか?

更新 1バグを Chromium チーム に報告しましたが、優先度が低いようです。

更新 2そのバグは別のバグ にマージされました。

Update 3 バグは修正されたようです!

4

1 に答える 1

1

CR/LF ペアを 1 文字ではなく 2 文字として扱うことに関連するWebKit のバグ (ファイリングを検討してください) のようです。たとえば、200 文字ではなく 197 文字が許可されている場合、通常は重要ではないため、これを無視しても問題ありません。

ただし、必要に応じて、キャレット位置を継続的に保存し、すべて\r\nをに置き換え\n、ユーザーが入力している間にキャレット位置をテキストエリアに復元することができます。

于 2012-10-16T22:57:18.777 に答える