web-dev-qa-db-ja.com

keyPressイベントが発生しないAndroid mobile

使ってます backbone,marionetteアプリケーション用。両方に同じコードを使用しましたdesktop and mobileしかしkeypressmobileで機能しません。テスト用に Jsfiddle を作成しました。

mobileでこのリンクを開くと、イベントが発生しません。desktopで開くと、発生します。これを解決するにはどうすればよいですか。

誰かが私を助けることができます。

ありがとう。

12
user3279058

Chromeモバイルは、現時点ではキー押下イベントを適切にサポートしていません。これには長年のバグがあります:

https://code.google.com/p/chromium/issues/detail?id=118639

V38で修正する必要があると思います。

8
Quin

入力ボックスで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つの問題があります。左側のナビゲーションが機能していません。より適切な解決策をすぐに更新します。

5
Innovation

ついに問題が見つかりましたが、オペラでは動作しません。数値フィールドのコードを記述する代わりに、htmlファイルの入力フィールドに属性type = 'number'を追加しました。テンキーのみが表示されます。私の要件を満たしています。 JsFiddle

htmlコード:

<input type='number'/>
1
user3279058

Browserstackでテスト済み。私に働いているようです。ここにあなたの要点へのリンクがあります:

http://www.browserstack.com/start#os=Android&os_version=4.1&device=Samsung+Galaxy+S+III&zoom_to_fit=true&full_screen=true&url=http%3A%2F%2Fjsfiddle.net%2F33Snz%2F3%2Fembedded %2Fresult%2F&speed = 1&start = true

テストしている特定のAndroidデバイスとブラウザを教えてください。

1
Ahmed Abbas

keypressイベントは非推奨になっているようです( https://developer.mozilla.org/en-US/docs/Web/Events/keypress を参照)。すべてのブラウザがサポートを終了する前に、今すぐkeydownイベントを使用してください。

1
Kong