Мне трудно понять, какой обработчик событий я должен использовать в этой простой функции ограничения символов. Когда я нажимаю максимальное значение, я не могу удалить никаких символов, поскольку он считается засчитанным как событие keypress
. Как я могу это исправить?
var mytext = document.getElementById("mytext");
mytext.addEventListener('keypress', function (evt) {
if (mytext.value.length >= 8) {
evt.preventDefault();
}
});
Вот JSFiddle http://jsfiddle.net/j93qU/2/
Пытаться
var mytext = document.getElementById("mytext");
mytext.addEventListener('keypress', function (evt) {
if (mytext.value.length >= 8 && (evt.keyCode != 8 || evt.keyCode != 37 || evt.keyCode != 46)) {
evt.preventDefault();
return false;
}
});
Свойство event.which
нормализует event.keyCode
и event.charCode
. Рекомендуется следить за событием. Для ввода клавиатуры.
evt.which!
?
Я бы просто использовал атрибут html input maxlength
<input type="text" maxlength="8">
В тот момент, когда люди начинают использовать скрипты, они забывают делать основные вещи!
Используйте встроенные базовые maxlength
и size
.
<input type="text" maxlength="8" size="8" />
В вашем случае ограничьте preventDefault()
только символами или разрешите специальные символы, такие как Del и Backspace.
mytext.addEventListener('keypress', function (evt) {
if (mytext.value.length >= 8 && (evt.keyCode != 8 || evt.keyCode != 37 || evt.keyCode != 46)) {
evt.preventDefault();
}
});