2016-05-09 16 views
7

私はユーザーがデータを入力できるテキストフィールドを持っています。 Tabキーを使用すると、フィールドがインデントされます。これは、Bluetoothキーボードを持つios以外のすべてでうまく動作します。Javascript - iPadタブキー検出Bluetoothキーボード

私がhttp://www.rapidtables.com/tools/notepad.htmにアクセスした場合、私はデスクトップ/ラップトップでタブすることができます。しかし、私の計算では...ダイスはありません。

私がhttps://api.jquery.com/keydown/を訪問した場合、https://api.jquery.com/keyup/https://api.jquery.com/keypress/ ...誰もそのiPadのタブキーを検出しません。

タブキーはNotesなどのネイティブアプリケーションで動作し、タブキーはウェブページ内のフィールド間を移動します。誰かが知っているJavascriptのタブキーを検出する方法はありますか? https://jsfiddle.net/9jv0bmbx/1/は基本的に私はちょうどe.keyCode===9デスクトップ/ラップトップで働くことを確認しています:ここで

EDIT

は、アクションのコードと問題を見ることができるので、私は一緒に投げたフィドルです。 iPadsでは、のキーをのタブキー以外のすべてのキーに登録します。

+0

したがって、問題のデバイスでタブを押したときにキー入力を記録すると、何も記録されませんか?そうでなければ、実際にフィールド上でキーを押すことなく、タブがフィールドを終了している可能性があります。グローバルkeypressロガーを作成して、タブを記録できるかどうかを確認してください。次のようにしてください。 $(document).keydown(function(e){ \t \t \t console.log(e.keyCode);}); – RayfenWindspear

+0

私はそれをフィドルに加えました。まだ何も。しかし、最初のフィールドのタブキーはまだフォーカスを2番目のフィールドに移動します。そのため、タブキーはフォーカスイベントを処理するためにアプリケーション(ブラウザ)によって登録されますが、私が推測しているキーボードイベントではありません。私はクロムとサファリの両方を試しました。同じ結果です。 –

+0

私の手が一つになった...私の提案はうまくいかなかった。ごめんなさい。 – RayfenWindspear

答えて

1

EDIT2:ここ

は解決のための別のオプションです。すべてのイベントをキャプチャする方法を説明する記事が見つかりました。以下はjsfiddleです。ここにはarticleというコンセプトがあります。 jsfiddleでは元のaddEventListenerが返されることに注意してください。なぜなら、空のリスナーを追加した後に必要なものが完了したからです。

jsfiddle

var oldAddEventListener = EventTarget.prototype.addEventListener; 

EventTarget.prototype.addEventListener = function(eventName, eventHandler) 
{ 
    oldAddEventListener.call(this, eventName, function(event) { 
     if(event.target.id === "textarea" && event.keyCode===9){ 
     event.preventDefault(); 
     $(this).val($(this).val()+"\t"); 
     $("#log").append("<li>Tab Pressed</li>"); 
     } 
    eventHandler(event); 
    }); 
}; 
$("#textarea").keydown(function(e) { 

}); 

EventTarget.prototype.addEventListener = oldAddEventListener; 

EDIT:

ここでのテストのキーボードは、タブのKeyDownイベントをキャプチャします。このライブラリを調べると、問題が解決するはずです。ライブラリを直接使用するか、コードを掘り下げてiOSのタブをキャプチャする方法を見つけてください。 http://dmauro.github.io/Keypress/

通常のタブキーを押していく途中でハードウェア/ファンクションキーの問題が発生しています。 OPTION + Tabを押すと、通常のようにハンドラーが起動します。おそらく、これを引き起こしている何らかの設定があるかもしれませんが、明らかにユーザーがあなたのアプリを使用するために設定を変更することは期待できません。あなたは何とかこれを活用する方法を見つけることができるかもしれませんが、これはデフォルトの動作であり、あなたはそれに固執しているようです。

iOSデバイスを検出して、タブのデフォルトの動作に対して何らかのオーバーライドを見つけ出すことが可能かもしれません。または、focusOut、またはblurイベントをキャプチャし、マウスによって引き起こされなかったかどうかを検出することができます。

+0

私は解決策を作るために別の編集をしていますが、iPadを持っている人がランチから戻ってXDのロックを解除するのを待たなければなりません。 – RayfenWindspear

+0

http://jsfiddle.net/gqxgax76/をセットアップして、Keypressを使用できるかどうかを確認します。私が知ったのは、ドキュメント/ウィンドウにフォーカスがあり、要素がない場合、タブキーが認識されるということです。入力/テキストエリアに注目すると、すぐにタブは機能しなくなります。私は2番目の例を得ることができるかどうかを見極めるつもりです。 –

+0

jsfiddleは私の最後にタブを表示しません。 OPT + Tabはまだ動作します。 – RayfenWindspear

関連する問題