it-swarm.com.de

Das JavaScript-Tastendruckereignis wurde im Android-Browser nicht ausgelöst

Ich habe einen einfachen Code zur Behandlung von keypress-Ereignissen erstellt: 

var counter = 0;        
$('input').on('keypress', function () {
    $('div').text('key pressed ' + ++counter);
});

JSFiddle.

Auf dem mobilen Browser (Android 4+, WindowsPhone 7.5 +) ... wird jedoch kein Keypress-Ereignishandler ausgelöst.

19
alex.mironov

Versuchen Sie, keyup wird Ihnen helfen

var counter = 0;        
$('input').on('keyup', function () {
    $('div').text('key up ' + ++counter);
});
11
HDT

Ich glaube, keypress ist jetzt veraltet. Sie können in Dom Level 3 Spec einchecken. Die Verwendung von keydown oder keyup sollte funktionieren. Die Spezifikation empfiehlt außerdem die Verwendung von voreiner Eingabe anstelle von keypress, aber ich bin nicht sicher, was die Unterstützung dafür ist.

14
Adam Hughes
$(document).ready(function() {
  var pattForZip = /[0-9]/;
  $('#id').on('keypress input', function(event) {
    if(event.type == "keypress") {
      if(pattForZip.test(event.key)) {
        return true;
      }
      return false;
    }
    if(event.type == 'input') {
      var bufferValue = $(this).val().replace(/\D/g,'');
      $(this).val(bufferValue);
    }
  })
})
2

Ja, einige Android-Browser unterstützen kein Tastendruckereignis. Wir müssen nur Keydown oder Keyup verwenden, erhalten jedoch andere Keycodes. Um zu vermeiden, dass andere Keycodes verwendet werden, verwenden Sie die folgende Funktion, um den Keycode durch Senden des Char-Werts abzurufen.

Z.B:

function getKeyCode(str) {
  return str && str.charCodeAt(0);    
}
function keyUp(){
 var keyCode = getKeyCode("1"); 
}
0
Gsvp Nagaraju

Verwenden Sie das Eingabeereignis von jQuery wie folgt:

$( 'input' ).on( 'input', function() {
    ...
} );

Damit kann man nicht feststellen, welche Taste gedrückt wurde, aber ich habe hier eine Nice-Problemumgehung gefunden: http://jsfiddle.net/zminic/8Lmay/

0
Torben