2013-04-03 10 views
6

Ich erstelle eine Android-Anwendung mit Cordova/PhoneGap 2.5.0, Knockout 2.1.0 und jQuery Mobile 1.3.0.Capture "Enter" Tastendruck mit numerischer Eingabe in Android/Cordova/Knockout

Ich habe einen Eingang mit dem Typ "number" erstellt, dieser Eingang ist mit einem Knockout auf seinem Wert verbunden. Es ist auch mit einem wichtigen Pressetermin verbunden. Ich beabsichtige, den Benutzer zu erwischen, der den Schlüssel drückt, geben Sie ein.

<input type="number" data-bind="value: $root.myInputValue, event: { keypress: $root.myInputKeypress }" min="0" step="1" max="29"> 


self.myInputKeypress = function() { 
    var keyCode = (event.which ? event.which : event.keyCode); 

    alert(keyCode); 

    if (keyCode === 13) { 
     //Do work here 

     return false; 
    } 

    return true; 
}; 

Wenn ich drücken eine Taste erlaubt wie eine Reihe der Code ausgeführt wird, wie erwartet und die gedrückten Tasten-Code wird alarmiert. Wenn ich drücke auf der Tastatur passiert nichts, es scheint, dass Android Ereignisse von Schlüsseln unterdrückt, die es für nicht relevant erachtet.

Gibt es eine Möglichkeit, dieses Verhalten zu ändern, so dass ich den Benutzer erfassen kann geben Sie ein?

+0

Bitte überprüfen, was Schlüsselcode für die Backspace-Taste zurück. – SHANK

+0

Hi, für die Rücktaste wird kein Schlüsselcode zurückgegeben (dasselbe gilt für Schlüssel wie +, *, -). Android scheint Tastenbetätigungen für Tasten zu unterdrücken, von denen er denkt, dass sie nicht auf eine numerische Eingabe angewendet werden. –

+2

Ich habe ähnliches Verhalten auch an anderen Orten beobachtet. Laut dem Text, den ich gelesen habe, unterdrückt Android Tastenbetätigungen für nicht sichtbare Zeichen. – SHANK

Antwort

0

versuchen, dies in Ihrer Situation

in Form Ihr Textfeld Put
<form id="Articleform" name="Article"> 
          <input type="number" data-bind="value: $root.myInputValue, event: { keypress: $root.myInputKeypress }" min="0" step="1" max="29"> 
         </form> 

und füge Ereignisformular einreichen tagen

$(document).ready(function() { 
    $("#Articleform").on('submit', function (event) { 
     alert("enter"); 
     return false; 
    }); 

jQuery Mobile

$('.ui-input-text').live('keyup', function(event) { 
if (event.keyCode == 13) { 
    // 'Go' pressed do something 
}}); 
0

hallo-Tag arbeiten könnte, wenn Sie klicken auf Go Alert ist geöffnet

0

ich das gleiche Problem hatte, war das Problem mit der Schlüsselcode Nummernfeld eingeben für 9 auf meinem Gerät ist, auf Simulator es 13.

Dieses ist für mich funktioniert:

$('.ui-input-text').live('keyup', function(event) { 
if (event.keyCode == 9) { 
    // 'Go' pressed do something 
}}); 
1

Wenn Sie mit Ionic/Schräg

<input ng-keypressed="myKeyPressed($event)" ng-model="myField"> 

self.myKeyPressed = function(keyEvent) { 
    if(keyEvent.keyCode == 13) //do things 
} 
Verwandte Themen