使ってます backbone,marionette
アプリケーション用。両方に同じコードを使用しましたdesktop and mobile
しかしkeypress
はmobile
で機能しません。テスト用に Jsfiddle を作成しました。
mobile
でこのリンクを開くと、イベントが発生しません。desktop
で開くと、発生します。これを解決するにはどうすればよいですか。
誰かが私を助けることができます。
ありがとう。
Chromeモバイルは、現時点ではキー押下イベントを適切にサポートしていません。これには長年のバグがあります:
https://code.google.com/p/chromium/issues/detail?id=118639
V38で修正する必要があると思います。
入力ボックスで2つのイベントを提案します。
これはデスクトップWebブラウザで機能します。
1)onkeypress = return isNumberKey(event);
_function isNumberKey(e)
{
var evt = e || window.event;
if(evt)
{
var charCode = evt.keyCode || evt.which;
}
else
{
return true;
}
if((charCode > 47 && charCode < 58) || charCode == 9 || charCode == 8 || charCode ==46 || charCode ==37 || charCode==39)
{
return true;
}
return false;
}
_
これはモバイルで機能します
2)onkeyup="numberMobile(event);"
_function numberMobile(e){
e.target.value = e.target.value.replace(/[^\d]/g,'');
return false;
}
_
入力ボックスに両方のイベントを適用すると、それは機能します。唯一の欠点は、それが遅くなることです。しかし、今のところ、私たちはそれと一緒に暮らす必要があります。
この解決策には1つの問題があります。左側のナビゲーションが機能していません。より適切な解決策をすぐに更新します。
ついに問題が見つかりましたが、オペラでは動作しません。数値フィールドのコードを記述する代わりに、htmlファイルの入力フィールドに属性type = 'number'を追加しました。テンキーのみが表示されます。私の要件を満たしています。 JsFiddle
htmlコード:
<input type='number'/>
Browserstackでテスト済み。私に働いているようです。ここにあなたの要点へのリンクがあります:
テストしている特定のAndroidデバイスとブラウザを教えてください。
keypress
イベントは非推奨になっているようです( https://developer.mozilla.org/en-US/docs/Web/Events/keypress を参照)。すべてのブラウザがサポートを終了する前に、今すぐkeydown
イベントを使用してください。