Я хотел бы ограничить пользователя вводом 10 символов в текстовую область и уведомлять пользователя о приближении к лимиту. Я делаю это, установив атрибут maxLength
текстовой области и используя некоторый javascript для обновления метки по мере ввода символов.Ограничение символов в текстовом поле, как учитывать возврат каретки?
Но мой javascript неправильно подсчитывает новые строки. Или, по крайней мере, они не учитывают их так же, как элемент textarea
. Если я войду в приведенный ниже пример ввода, мой javascript будет вычислять, что 6 символов используются и выводят, что осталось 4 символа, но textarea
не позволит больше вводить данные.
Пример: введите 'D', нажмите кнопку возврата в 4 раза, введите 'D':
D
D
(я на самом деле позволяет более чем 10, но низкое число лучше иллюстрирует вопросы)
function limitText() {
var textarea = document.getElementById('textarea');
var char_label = document.getElementById('charcount_text');
var count = textarea.value.length;
var max = textarea.maxLength;
console.log(count + " " + max);
var remaining = max - count;
if (remaining <= 0) {
char_label.innerHTML = '10 character limit reached.';
} else if (remaining <= 5) {
char_label.innerHTML = '10 character limit, ' + remaining + ' remaining.';
} else {
char_label.innerHTML = '';
}
}
textarea {
width:200px;
height:80px;
}
<textarea id="textarea" onKeyDown="limitText()" onKeyUp="limitText()" maxlength="10"></textarea>
<span class="charcount_text" name="charcount_text" id="charcount_text"></span>