2016-05-09 8 views
7

Ich habe ein Textfeld, in dem Benutzer Daten eingeben können. Sie können die Tab-Taste verwenden und dann wird das Feld eingerückt. Dies funktioniert auf allen außer iOS mit einer Bluetooth-Tastatur.Javascript - iPad Tab Tastenerkennung mit Bluetooth Tastatur

Wenn ich http://www.rapidtables.com/tools/notepad.htm besuche, kann ich Tab auf meinem Desktop/Laptop. Aber auf meinem iPad ... keine Würfel.

Wenn ich besuche https://api.jquery.com/keydown/, https://api.jquery.com/keyup/, https://api.jquery.com/keypress/ ... KEINE von ihnen erkennen die Tab-Taste auf dem iPad.

Der Tab-Taste funktioniert in ios native Anwendungen, wie Notes, und die Tab-Taste navigiert zwischen Feldern innerhalb einer Webseite. Gibt es eine Möglichkeit, die Tab-Taste in Javascript zu erkennen, von der jeder weiß?

EDIT

Hier ist eine Geige ich zusammen warf, so dass Sie den Code und Problem in Aktion sehen können: https://jsfiddle.net/9jv0bmbx/1/ Im Grunde bin ich überprüft nur, dass e.keyCode===9, die auf dem Desktop/Laptops arbeitet. Auf iPads registriert es JEDER Schlüssel außer die Tab-Taste.

+0

Also, wenn Sie den Tastendruck protokollieren, wenn die Registerkarte auf den fehlerhaften Geräten gedrückt wird, protokolliert es nichts? Wenn nicht, könnte es sein, dass die Registerkarte das Feld verlässt, ohne tatsächlich einen Tastendruck auf dem Feld auszuführen. Versuchen Sie, einen globalen Keypress-Logger zu erstellen, und prüfen Sie, ob Sie einen Tab protokollieren können. Folgendes sollte es tun. $ (Dokument) .keydown (Funktion (e) { \t \t \t console.log (e.keyCode);}); – RayfenWindspear

+0

Ich habe das zur Geige hinzugefügt. Immer noch nichts. Aber die Tab-Taste im ersten Feld bewegt den Fokus immer noch auf das zweite Feld. Also wird die Tab-Taste von der Anwendung (Browser) registriert, um Fokus-Ereignisse zu behandeln, aber nicht als ein Tastaturereignis, das ich errate.Ich habe sowohl Chrom als auch Safari ausprobiert, gleiches Ergebnis. –

+0

Ich habe meine Hände auf einen ... mein Vorschlag hat nicht funktioniert. Es tut uns leid. – RayfenWindspear

Antwort

1

EDIT2:

Hier ist eine weitere Option für eine Lösung. Ich habe einen Artikel gefunden, in dem beschrieben wird, wie ALLE Ereignisse erfasst werden. Unten ist ein Jfiddle, und hier ist die article Ich fand dieses Konzept. Beachten Sie, dass in der Datei jsfiddle der ursprüngliche addEventListener zurückgegeben wird, da das, was Sie benötigen, nach dem Hinzufügen eines leeren Listeners erfolgt ist.

jsfiddle

var oldAddEventListener = EventTarget.prototype.addEventListener; 

EventTarget.prototype.addEventListener = function(eventName, eventHandler) 
{ 
    oldAddEventListener.call(this, eventName, function(event) { 
     if(event.target.id === "textarea" && event.keyCode===9){ 
     event.preventDefault(); 
     $(this).val($(this).val()+"\t"); 
     $("#log").append("<li>Tab Pressed</li>"); 
     } 
    eventHandler(event); 
    }); 
}; 
$("#textarea").keydown(function(e) { 

}); 

EventTarget.prototype.addEventListener = oldAddEventListener; 

EDIT:

Der Test Tastatur hier fängt die Registerkarte keydown. Schauen Sie in diese Bibliothek, es sollte Ihre Probleme beheben. Verwenden Sie die Bibliothek entweder direkt oder ermitteln Sie, wie die Registerkarte auf iOS erfasst wird, indem Sie den Code durchsuchen. http://dmauro.github.io/Keypress/

Es gibt eine Art Hardware-/Funktionstastenproblem, das einer normalen Tabulatortaste im Wege steht. Durch Drücken von OPTION + Tab wird Ihr Handler wie gewohnt ausgelöst. Möglicherweise gibt es eine Art von Einstellung, die dies verursacht, aber Sie können natürlich nicht erwarten, dass Ihre Benutzer ihre Einstellungen für die Verwendung Ihrer App ändern. Sie können möglicherweise einen Weg finden, dies irgendwie zu nutzen, aber es scheint, dass dies das Standardverhalten ist, und Sie stecken damit fest.

Es könnte möglich sein, iOS-Geräte zu erkennen und eine Art Override für das Standardverhalten des Tabs herauszufinden. Oder Sie können das focusOut erfassen oder Ereignisse verwischen und erkennen, ob es nicht durch die Maus verursacht wurde.

+0

Ich habe eine andere Bearbeitung mit einer Lösung zu machen, aber ich muss warten, bis der Typ mit dem iPad vom Mittagessen zurückkommt, um XD zu entsperren. – RayfenWindspear

+0

Ich habe einfach http://jsfiddle.net/gqxgax76/ eingerichtet, um zu sehen, ob ich Keypress verwenden könnte. Was ich herausgefunden habe, ist, dass, wenn das Dokument/Fenster den Fokus hat und keine Elemente, der Tab-Schlüssel erkannt wird. Sobald Sie sich auf einen Eingabe/Textbereich konzentrieren, funktioniert der Tab nicht mehr. Ich werde sehen, ob ich das zweite Beispiel zur Arbeit bringen kann. –

+0

Das Jfiddle zeigt keine Tabs an meinem Ende. OPT + Tab funktioniert trotzdem. – RayfenWindspear

Verwandte Themen