Я использую контентные элементы div в своем веб-приложении, и я пытаюсь найти решение, позволяющее ограничить количество символов, разрешенных в этой области, и как только предел будет удачен, попытка чтобы вводить символы просто ничего не делает. Это то, что я до сих пор:Ограничение количества символов в ContentEditable div
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));
}
}
Это действительно ограничивает количество символов до числа, указанного на «Макс», однако, как только текст района устанавливается на Jquery .text() Функция курсор возвращается в исходное положение к началу области. Поэтому, если пользователь продолжает печатать, введенные символы будут вставлены в начале текста, и последний символ текста будет удален. Так что, действительно, мне нужен какой-то способ держать курсор в конце текста контентной области.
работает как шарм! :-) Я также добавил условные обозначения для клавиш со стрелками и backspace/delete, кроме того, что он отлично работает. –
Вставка через контекстное меню или меню редактирования все равно может привести к превышению пользователем. –
@Tim Down - очень верно. Неизбежно (насколько мне известно), если используется contentEditable div, поскольку нет события 'change'. Мое решение было специфическим для вопроса. Твой очень точно покрывает общий недостаток представленного подхода. – user113716