2013-04-03 12 views
6

Tworzę aplikację Android za pomocą Cordova/PhoneGap 2.5.0, Knockout 2.1.0 i jQuery Mobile 1.3.0.Przechwytywanie "Enter" naciśnięcie klawisza numerycznego w Android/Cordova/nokaut

Utworzono dane wejściowe z typem "liczba", to wejście jest databound z Knockout na jego wartość. Jest również databound do kluczowego zdarzenia prasowego. Zamierzam złapać użytkownika, naciskając klawisz wprowadź.

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

Po naciśnięciu dozwolonego klucza, na przykład numeru, kod działa zgodnie z oczekiwaniami, a naciśnięty kod klawisza zostaje ostrzeżony. Kiedy naciskam wpisz na klawiaturze nic się nie dzieje, wydaje się, że Android tłumi zdarzenia z kluczy, które ich zdaniem nie są istotne.

Czy istnieje sposób, aby zmienić to zachowanie, aby umożliwić przechwycenie użytkownika uderzając wpisać?

+0

proszę sprawdzić jaki kod klucz powraca do klawisza Backspace. – SHANK

+0

Cześć, nie zwracano kodu klucza dla backspace (to samo dotyczy klawiszy takich jak +, *, -). Android wydaje się tłumić naciśnięcia klawiszy dla kluczy, które według nich nie mają zastosowania do danych numerycznych. –

+2

Podobne zachowanie zaobserwowałem również w innych miejscach. Zgodnie z tekstem, który przeczytałem, Android blokuje naciśnięcia klawiszy dla niewidocznych znaków. – SHANK

Odpowiedz

0

spróbować to może działać w danej sytuacji za pomocą jQuery mobile

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

hi Umieść pole tekstowe w postaci tagu

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

i dodać formularz zdarzenia submit Tage

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

kiedy kliknięcie w powiadomieniu o uruchomieniu jest otwarte

0

miałem ten sam problem, problem był z numerem pola kodu dostępu Enter 9 na urządzeniu, na symulatorze jest 13.

Działa to dla mnie:

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

Jeśli używasz Ionic/kątowa

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

self.myKeyPressed = function(keyEvent) { 
    if(keyEvent.keyCode == 13) //do things 
} 
Powiązane problemy