Drücken Sie die Rücktaste, um BlackBerry mit jQueryMobile zu drücken

8

Gibt es eine Möglichkeit, die Backspace-Taste auf einem input[type="text"] in BlackBerry zu erfassen? Ich habe versucht mit $('input[type="text"]').bind('keydown', function(event) { ... }); und es erfasst alle wichtigen Presseereignisse mit Ausnahme der für die Rücktaste (del). Durch Drücken dieser Taste wird kein Schlüsselereignis ausgelöst.

Kennt jemand eine Möglichkeit, das Ereignis zu erfassen?

Ich entwickle für OS 6.0 und teste mit dem BlackBerry Simulator 9800.

EDITED - der Code, den ich gerade teste

%Vor%     
Pablo 18.05.2012, 07:46
quelle

4 Antworten

6

Ich bin gerade auf diesen Ärger gestoßen und habe diese Frage bei meiner Suche nach Antworten gefunden, also hier sind Details meiner Untersuchung und Lösung (gut, Workaround).

Die Ereignisse keyup und keydown werden nicht einfach an den Elementen input oder textarea im Blackberry-Browser ausgelöst, wenn die Rücktaste gedrückt wird. It wird jedoch ausgelöst, wenn der Event-Handler an das document gebunden ist:

%Vor%

Warum das der Fall ist, habe ich absolut keine Ahnung. Das Ereignis keyup sollte sprudeln, und das tut es, aber da es nicht einmal ausgelöst wird, wenn Sie die Rücktaste drücken, ist das nicht viel sinnvoll.

Aber es gibt noch ein anderes Ereignis. Das Ereignis input wird vom Blackberry-Browser unterstützt und wird korrekt ausgelöst, wenn sich der Wert des Elements ändert (einschließlich glücklicherweise für uns, wenn diese Änderung auf ein Drücken der Rücktaste zurückzuführen ist).

Daher können wir das Problem umgehen, indem wir Event-Handler sowohl an keydown als auch an input binden. Das Ereignis keydown wird vor input ausgelöst, außer wenn die Rücktaste gedrückt wird. In diesem Fall wird keydown nicht ausgelöst. So können wir das ganz leicht verfolgen:

%Vor%

Einige Anmerkungen:

  • Soweit ich das beurteilen kann, ist dies nur ein Problem im Browser auf Blackberry 6. Ich habe Blackberry 5 (physisches Gerät und Simulator) und 7 (Simulator) getestet und beide werden keydown und keyup Ereignisse für den Rückschrittschlüssel.

  • Diese "Korrektur" funktioniert in fast jedem Browser, in dem ich sie getestet habe (damit Sie Blackberry 6 richtig nutzen können, ohne andere Browser zu stören), außer Opera Mobile (getestet in Version 12), was für einige gilt reason mag das input -Ereignis manchmal zweimal auslösen.

  • Dadurch können Sie nur die Rücktaste drücken, wenn sich Text in der zu löschenden Eingabe befindet (andernfalls wird das input -Ereignis nicht ausgelöst). Dies ist wahrscheinlich der größte Fehler des Skripts.

  • Sie finden hier ein funktionierendes Beispiel hier , aber zum Testen mobiler Geräte ist es schneller, eingebettete Version .

James Allardice 13.09.2012, 15:22
quelle
4

der folgende Code, funktioniert gut. Sie können es auf jsfiddle sehen. testete es auf Chrom

%Vor%

für Blackberry Verwendung

%Vor%

siehe Detail

    
Rab 18.05.2012 07:54
quelle
1

Sie können Ссылка verwenden, um zu sehen, welchen Schlüsselcode Sie zurückbekommen . Auf BlackBerry 9900 7.1 bekomme ich keyCode 8.

    
JasonDScott 31.05.2012 15:08
quelle
1

Es gibt keine Möglichkeit, dies im allgemeinen Browser zu erreichen.

  

Die einzige Möglichkeit, das Backkey-Ereignis mithilfe von JavaScript zu verfolgen, besteht darin, a zu verwenden   Widget / WebWorks-Anwendung mit KEY_BACK API.

    
Farhan Ahmad 31.05.2012 23:24
quelle