ウェブサイトのカスタム検索ボックスのキーコードを検出する必要がありますが、キーコードはChrome for Android(バックスペースを除く、 8)を返します。他の誰かがこれを経験し、どのようにそれを回避しましたか?Chrome for Android 'ゼロ以外のキーコードまたは文字コードを検出しません。
私はChrome 27.0.1453.90 on Android 4.1.2 Jelly bean。問題は次のような単純なもので複製できます。alert(event.keyCode);
解決策の下も私のために働く。他の人にも役立つかもしれません。
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)
}
私はこの問題に直面しました、そして、これは私が問題を解決する方法を見つけた方法です。
これが、keydownイベントがevent.originalEvent.data内の情報を含む "textInput"と呼ばれる一意のイベントによって実際に発生したことを発見した方法です。
これがあなたの時間と幸運を救うことを願っています!
私は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();
}
}
});
これがこの問題に直面している人々に役立つことを願っています。幸運を。
誰かがまだそれを掘っている場合。問題はAndroid
デバイス用のSamsungキーボードに表示されます。
代わりにonkeyup
を使用してください。
最近、中国製のAndroid電話Meizu MX3でこの問題に遭遇しました。これは、Android 4.4.4。
デフォルトのブラウザとChromeは正常に動作しますが、いくつかの奇妙な理由により、私たちは知りません。event.keyCode 、event.charCodeおよびevent.whichは常に0を返します他のブラウザ( CM Browser またはWechatアプリのwebviewなど)。
'A'や ''(スペース)などの最後に入力した文字をチェックすることでこれを解決し、 "A" .charCodeAt(0)などのcharCodeAtを使用してASCIIコードに変換します。 97を返します。これは、実際に必要なcharコードです。
しかし、この戦略を使用して可視文字の文字コードを決定することしかできません。これは、現在のニーズに感謝しています。
これからインスピレーションを得られることを願っています。
<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>
KeyCodeを取得する真の方法は、
event.which
イベントオブジェクトのこのプロパティは、event.keyCode
プロパティ。 jQueryのドキュメント here またはMDN here でも読むことができます。
他の方法では、Android devices。Androidブラウザは、デバイスの断片化(さまざまなROMデバイス間または外部キーボードアプリ間)最良の方法は、すべてのキーボードイベント(キーダウン、キーアップ、キー押下)を使用し、すべての結果を比較して押されたキーを取得することです。
最良の方法は、「入力」イベントで使用し、常に最後のチャーターを取得することです。入力イベントは、私の答えのように制御できます here 。
keyCodeの代わりにcharCodeを使用する必要がある
<input type="text" onKeyPress="return funName(this,event)" />
<script language="javascript">
function funName(th,ev)
{
alert(ev.charCode);
}
</script>
入力のタイプをtelに変更します:<input type="tel">
これにより、keyCodeをログに記録できますが、バックスペースはログに記録されず、モバイルのキーボードに数字のみを強制する場合があります。