Когда количество символов превышает максимальное ограничение (20 символов), метод подстроки возвращает символы, введенные во входные данные, с индексов от 0 до 20. Метод подстроки перезаписывает все, что пользователь пытается набрать, с количеством символов, равным 20.
Но в моей программе я могу печатать больше символов после того, как достиг своего максимального предела. Почему это происходит? Я не хочу, чтобы это случилось.
const txt = document.querySelector('textarea')
const message = document.querySelector('.message')
let maxLength = 20;
let warnLength = 15;
['keyup', 'keydown', 'change'].forEach(event => {
txt.addEventListener(event, textCounter)
})
function textCounter() {
let count = txt.value.length
if (count > warnLength) {
message.innerHTML = `${(maxLength-count)} characters left`
} else if (count > maxLength) {
txt.value = txt.value.substring(0, maxLength)
}
}
textarea {
width: 400 px;
height: 100 px;
}
<textarea></textarea>
<div class="message"></div>