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
});