jQuery: событие keyup для мобильного устройства

у меня есть несколько проблем с запуском события keyup на моем iPhone, мой код выглядит следующим образом:

        var passwordArray = ["word", "test", "hello", "another", "here"];

        var test = document.getElementById('enter-password');
        test.addEventListener('keyup', function(e) {

            if (jQuery.inArray(this.value, passwordArray) != -1) {
                alert("THIS IS WORKING");
            } else {}

        });

идея в том, что как пользователь вводит текст в #enter-password поле, как и когда они совпали слово в passwordArray сигнал тревоги выстрелит. Это работает на рабочем столе, например, после ввода word функция будет работать сразу же, как только вы набрали d. Есть ли в любом случае, чтобы заставить это работать для mobile тоже?

3 ответов


вы можете добавить входное событие. Это событие, которое срабатывает всякий раз, когда изменяется вход. Вход работает как на настольных, так и на мобильных телефонах

test.on('keyup input', function(){
  //code
});

вы можете проверить этот ответ для более подробной информации о входное событие jQuery


есть три события, которые вы можете использовать (но вы должны быть осторожны, как вы их "комбинируете"):

  • keyup: он работает на устройствах с клавиатурой, он срабатывает, когда вы отпускаете клавишу (любую клавишу, даже клавиши, которые ничего не показывают на экране, например ALT или CTRL);

  • touchend: он работает на сенсорных устройствах, он срабатывает, когда вы удаляете палец / ручку из дисплей;

  • вход: он срабатывает при нажатии клавиши "и входные изменения" (если вы нажимаете клавиши, такие как ALT или CTRL, это событие не запускается).

на вход событие работает на клавиатурных устройствах и с сенсорными устройствами, важно отметить это, потому что в принятом ответе пример правильный, но приближенный:

test.on('keyup input', function(){
}

On клавиатура на основе устройств, эта функция звонил дважды потому что оба события keyup и вход будет уволен.

правильный ответ должен быть:

test.on('keyup touchend', function(){
}

(функция вызывается на keyup для настольных компьютеров/ноутбуков или touchend для мобильных телефонов)

или вы можете просто использовать

test.on('input', function(){
}

но помните, что вход событие не будет запускаться всеми клавишами (CTRL, ALT & co. не уволит событие.)


событие touchend запускается при удалении точки касания с устройства.

https://developer.mozilla.org/en-US/docs/Web/Events/touchend

вы можете передать события keyup и touchend в.метод on() jQuery (вместо метода keyup ()) для запуска кода в обоих этих событиях.

test.on('keyup touchend', function(){
//code
});