Как я могу использовать keypress и event.preventDefault () вместе для ограничения ввода символов?

0

Мне трудно понять, какой обработчик событий я должен использовать в этой простой функции ограничения символов. Когда я нажимаю максимальное значение, я не могу удалить никаких символов, поскольку он считается засчитанным как событие keypress. Как я могу это исправить?

var mytext = document.getElementById("mytext");

mytext.addEventListener('keypress', function (evt) {
    if (mytext.value.length >= 8) {
        evt.preventDefault();
    }

});

Вот JSFiddle http://jsfiddle.net/j93qU/2/

  • 0
    это нормально работает в моей системе, я могу удалить символы после того, как я ввел максимальное количество символов. Я использую Chrome в OS X. В каком браузере вы тестируете свой код?
  • 0
    Firefox, может быть, это то, что не так. Как я могу это исправить?
Показать ещё 1 комментарий
Теги:

3 ответа

0
Лучший ответ

Пытаться

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. Рекомендуется следить за событием. Для ввода клавиатуры.

  • 0
    Отлично работает, но что есть evt.which! ?
  • 0
    Для событий клавиш или мыши это свойство указывает конкретную клавишу или кнопку, которая была нажата. Проверьте api.jquery.com/event.which
2

Я бы просто использовал атрибут html input maxlength

<input type="text" maxlength="8">
  • 0
    Да, я знаю, но для этого я стараюсь не использовать HTML.
  • 1
    Есть ли причина, по которой вы не хотите использовать HTML? Я думаю, вы пишете сайт правильно?
0

В тот момент, когда люди начинают использовать скрипты, они забывают делать основные вещи!

Используйте встроенные базовые 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();
    }

});
  • 0
    Я пытаюсь использовать только javaScript
  • 0
    Но почему вы пытаетесь так усложнить вашу проблему?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню