Poniższy kod działa idealnie w przeglądarce Chrome, Firefox, na telefonie iPhone, a nawet w przeglądarkach innych firm na Androida. Jednak po uruchomieniu w natywnym kluczu przeglądarki zdarzenia dla znaków specjalnych, takich jak Å, Ę i Ö na mojej szwedzkiej klawiaturze, po prostu nie są wyzwalane.Brak zdarzeń związanych z naciśnięciem klawisza dla niektórych klawiszy w przeglądarce Androida
Przykład powinien zezwalać użytkownikowi na wprowadzanie pojedynczego znaku na raz. Działa jak zaklęcie, chyba że w Androidzie naciskam klawisze takie jak Å, Ę lub Ö, dla których mogę wprowadzić dowolną liczbę znaków.
Oto jsFiddle dla każdego, kto chce go wypróbować: http://jsfiddle.net/x7H6f/. Jeśli nie masz specjalnych klawiszy, takich jak moje szwedzkie wydrukowane na klawiaturze, postacie takie jak é (przytrzymaj E) powinny wykonać "sztuczkę".
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Key Event test</title>
</head>
<body>
<input type="text" id="a" name="test" />
<script>
document.getElementById("a").onkeypress = function(e) {
e = e || window.event;
var k = e.keyCode || e.which;
this.value = String.fromCharCode(k);
return false;
}
</script>
</body>
</html>
I nie, keydown i keyup również nie działają. Czy coś przeoczyłem, czy to błąd? To strasznie denerwujące podczas opracowywania szwedzkich aplikacji w PhoneGap!
Dzięki!
EDIT: Jak Manor mówi w swej odpowiedzi, zdarzenie input
mogą być użyte. Oto skrzypce, które demonstrują różnice między zdarzeniami keypress
, input
i change
: http://jsfiddle.net/Qxd76/ (użyj (użyj http://jsfiddle.net/Qxd76/show, aby wyświetlić wynik na smartfonie).
Im przeżywa to samo, to prawdopodobnie błąd w android? – rapadura
Jestem przyzwoicie pewien, że to błąd w rodzimej przeglądarce dla Androida, którego używają przeglądarki. Nie potwierdziłem tego, ale podejrzewam, że powinno to zostać rozwiązane po wersji 4, ponieważ po tym zmieniły one przeglądarkę na chrome? – Zut
@rapadura @Zut '' input'' event nie zwraca '' keyCode'' lub '' which'' lub '' charCode'' .. – Kosmetika