2013-04-03 7 views
6

Sto creando un'applicazione Android utilizzando Cordova/PhoneGap 2.5.0, Knockout 2.1.0 e jQuery Mobile 1.3.0.Cattura pressione tasto "Invio" con immissione numerica in Android/Cordova/Knockout

Ho creato un input con tipo "numero", questo input è in databound con Knockout sul valore. È anche un evento chiave per la stampa. Ho intenzione di catturare l'utente premendo il immettere chiave.

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

Quando premo un tasto di permesso, ad esempio un numero di codice viene eseguito come previsto e il codice tasti premuti è avvisato. Quando si preme immettere sulla tastiera non accade nulla, sembra che Android stia eliminando gli eventi dalle chiavi che non sono rilevanti.

C'è un modo per modificare questo comportamento in modo che io possa catturare l'utente che colpisce immettere?

+0

si prega di verificare quale codice chiave restituisce per il tasto backspace. – SHANK

+0

Ciao, nessun codice chiave viene restituito per backspace (lo stesso vale per i tasti come +, *, -). Android sembra sopprimere le pressioni dei tasti per i tasti che non si applicano a un input numerico. –

+2

Ho osservato un comportamento simile anche in altri posti. Secondo il testo che ho letto, Android sta sopprimendo le pressioni dei tasti per i caratteri non visibili. – SHANK

risposta

0

provare questo potrebbe funzionare nella vostra situazione utilizzando jQuery Mobile

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

hi Metti la tua casella di testo in forma di tag

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

e aggiungere forma evento Invia tage

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

quando si fa clic su go avviso è aperto

0

Ho avuto lo stesso problema, il problema è stato con il campo il numero del codice di accesso per entrare è 9 sul mio dispositivo, sul simulatore è 13.

Questo funziona per me:

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

Se si utilizza ionico/angolare

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

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