web-dev-qa-db-ja.com

キーコードはChrome for Android

ウェブサイトのカスタム検索ボックスのキーコードを検出する必要がありますが、キーコードはChrome for Android(バックスペースを除く、 8)を返します。他の誰かがこれを経験し、どのようにそれを回避しましたか?Chrome for Android 'ゼロ以外のキーコードまたは文字コードを検出しません。

私はChrome 27.0.1453.90 on Android 4.1.2 Jelly bean。問題は次のような単純なもので複製できます。
alert(event.keyCode);

31
barrrrrrrrrooo

解決策の下も私のために働く。他の人にも役立つかもしれません。

var getKeyCode = function (str) {
    return str.charCodeAt(str.length - 1);
}

document.getElementById("a").onkeyup = function (e) {
    var kCd = e.keyCode || e.which;
    if (kCd == 0 || kCd == 229) { //for Android chrome keycode fix
        kCd = getKeyCode(this.value);
    }
    alert(kCd)
}
14
coder

私はこの問題に直面しました、そして、これは私が問題を解決する方法を見つけた方法です。

  • まず、Android電話でUSBデバッグを有効にして、デスクトップマシンでブラウザのログを表示できるようにする必要があります。
  • 第二に、携帯電話とデスクトップタイプ「monitorEvents(document)」または検査したい要素のコンソール内でWebアプリを更新します。
  • 電話機で検査するアクションを実行します。

これが、keydownイベントがevent.originalEvent.data内の情報を含む "textInput"と呼ばれる一意のイベントによって実際に発生したことを発見した方法です。

これがあなたの時間と幸運を救うことを願っています!

3
Danny Coulombe

私はAndroid SonyXperiaとHTCのデバイスで同じ問題に直面しました。event.keyCode()を読むことでAmountテキストフィールドを検証するハイブリッドアプリケーションを開発しています。 =keydownに入力された文字のテキストフィールドからのイベント。これにより、数字とドット(。)文字のみを入力できます。試しましたが、うまくいきませんでした。これらのデバイスでは常に0を返します。その後、正規表現によるkeyupイベントと文字のマッチングを使用した他のソリューションが登場しました。

$("#AmountField").keyup(function (e) {

    var regex = /^[0-9\.]$/;
    var str = $(this).val();
    var subStr = str.substr(str.length - 1);
    if(!regex.test(subStr)) {

        if(str.length >0){
            $(this).val(str.substr(0, (str.length - 1)));
        }else{ 
            $(this).val();
        }

    }

});

これがこの問題に直面している人々に役立つことを願っています。幸運を。

2
Raghu

誰かがまだそれを掘っている場合。問題はAndroidデバイス用のSamsungキーボードに表示されます。

代わりにonkeyupを使用してください。

2
Sergei Panfilov

最近、中国製のAndroid電話Meizu MX3でこの問題に遭遇しました。これは、Android 4.4.4

デフォルトのブラウザとChromeは正常に動作しますが、いくつかの奇妙な理由により、私たちは知りません。event.keyCodeevent.charCodeおよびevent.whichは常に0を返します他のブラウザ( CM Browser またはWechatアプリのwebviewなど)。

'A'や ''(スペース)などの最後に入力した文字をチェックすることでこれを解決し、 "A" .charCodeAt(0)などのcharCodeAtを使用してASCIIコードに変換します。 97を返します。これは、実際に必要なcharコードです。

しかし、この戦略を使用して可視文字の文字コードを決定することしかできません。これは、現在のニーズに感謝しています。

これからインスピレーションを得られることを願っています。

2
Johnny Zhao
<input type="text" id="char" size="15" onblur="showKeyCode()" value="a">
<input type="button" value="Show Key Code" onclick="showKeyCode();">
<script>
function showKeyCode()
{
    var character = document.getElementById ( "char" ).value.substr(this.length - 1);
    var  code = character.charCodeAt();

    var stringall = document.getElementById ( "char" ).value;
    var msg = "The Key Code for the \""+character+"\" character is "+code+".";
    alert(msg);
 }
</script>

参照用

1
coder

KeyCodeを取得する真の方法は、

event.which

イベントオブジェクトのこのプロパティは、event.keyCodeプロパティ。 jQueryのドキュメント here またはMDN here でも読むことができます。

他の方法では、Android devices。Androidブラウザは、デバイスの断片化(さまざまなROMデバイス間または外部キーボードアプリ間)最良の方法は、すべてのキーボードイベント(キーダウン、キーアップ、キー押下)を使用し、すべての結果を比較して押されたキーを取得することです。

最良の方法は、「入力」イベントで使用し、常に最後のチャーターを取得することです。入力イベントは、私の答えのように制御できます here

1
g.e.manor

keyCodeの代わりにcharCodeを使用する必要がある

<input type="text" onKeyPress="return funName(this,event)" />

<script language="javascript">
function funName(th,ev)
{   
   alert(ev.charCode);
}
</script>
0
Atif Mahmood

入力のタイプをtelに変更します:<input type="tel">

これにより、keyCodeをログに記録できますが、バックスペースはログに記録されず、モバイルのキーボードに数字のみを強制する場合があります。

0
George