it-swarm.com.de

jQuery: Keyup-Ereignis für mobile Geräte

Ich habe ein paar Probleme mit einem Keyup-Ereignis, das auf meinem iPhone ausgelöst wird. Mein Code lautet wie folgt:

        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 {}

        });

Die Idee ist, dass, wenn der Benutzer in das Feld #enter-password eingibt, und wenn ein Wort in der Variable passwordArray übereinstimmt, der Alarm ausgelöst wird. Dies funktioniert auf dem Desktop, z. Sobald Sie Word eingegeben haben, wird die Funktion sofort ausgelöst, sobald Sie die d eingegeben haben. Gibt es sowieso, dass dies auch für Mobilgeräte funktioniert?

8
user1374796

Sie können Eingabeereignisse hinzufügen. Es ist ein Ereignis, das ausgelöst wird, wenn sich die Eingabe ändert. Die Eingabe funktioniert sowohl auf dem Desktop als auch auf Mobiltelefonen

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

In dieser Antwort finden Sie weitere Informationen zu jQuery Input Event

19
Joyson

Es gibt drei Ereignisse, die Sie verwenden können (aber Sie müssen vorsichtig sein, wie Sie sie "kombinieren"):

  • keyup : funktioniert auf Geräten mit Tastatur, es wird ausgelöst, wenn Sie eine Taste loslassen (jede Taste, auch Tasten, die nichts auf dem Bildschirm anzeigen, wie ALT oder STRG);

  • touchend : Es funktioniert auf Touchscreen-Geräten. Es wird ausgelöst, wenn Sie Ihren Finger/Stift vom Display entfernen.

  • input : wird ausgelöst, wenn Sie eine Taste drücken "und die Eingabe sich ändert" (wenn Sie Tasten wie ALT oder CTRL drücken, wird dieses Ereignis nicht ausgelöst).

Das input event funktioniert auf Tastaturen und bei Touchscreen-Geräten. Es ist wichtig darauf hinzuweisen, da das Beispiel in der akzeptierten Antwort korrekt ist, aber näherungsweise:

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

Auf Tastatur-basierten Geräten wird diese Funktion zweimal aufgerufen , weil sowohl die Ereignisse Keyup als auch Input ausgelöst werden.

Die richtige Antwort sollte sein:

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

(Die Funktion wird auf keyup für Desktops/Laptops OR auf touchend für Handys aufgerufen)

oder Sie können es einfach verwenden 

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

denken Sie jedoch daran, dass das input event nicht von allen Tasten ausgelöst wird (CTRL, ALT & Co. löst das Event nicht aus).

6
Frank

Das Touchend-Ereignis wird ausgelöst, wenn ein Berührungspunkt vom Gerät entfernt wird.

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

Sie können keyup- und touchend -Ereignisse an die .on () jQuery-Methode (anstelle der keyup () -Methode) übergeben, um Ihren Code für beide Ereignisse auszulösen.

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

Sie sollten ein Eingabeereignis hinzufügen. Es funktioniert sowohl auf mobilen Geräten als auch auf Computergeräten. 

0
user10643043