Webアプリケーションでcontenteditablediv要素を使用していて、その領域で許可される文字数を制限するソリューションを考え出そうとしています。制限に達すると、文字を入力しようとしても何も起こりません。これは私がこれまでに持っているものです:
var content_id = 'editable_div';
//binding keyup/down events on the contenteditable div
$('#'+content_id).keyup(function(){ check_charcount(content_id, max); });
$('#'+content_id).keydown(function(){ check_charcount(content_id, max); });
function check_charcount(content_id, max)
{
if($('#'+content_id).text().length > max)
{
$('#'+content_id).text($('#'+content_id).text().substring(0, max));
}
}
これにより、文字数が「max」で指定された数に制限されますが、領域のテキストがjquery .text()関数によって設定されると、カーソルは領域の先頭にリセットされます。したがって、ユーザーが入力を続けると、新しく入力された文字がテキストの先頭に挿入され、テキストの最後の文字が削除されます。だから本当に、私はコンテンツ編集可能領域のテキストの終わりにカーソルを保つための何らかの方法が必要です。