2012-05-23 24 views
10

あなたが入力するときにリストをフィルタリングするテキスト入力でモバイルに最適化されたサイトを作っています。これに似ています:http://jquerymobile.com/test/docs/lists/lists-search.htmlモバイルデバイスのテキスト入力フォーカスのページをスクロールしますか?

電話機の場合、入力を選択したときにページがスクロールダウンされ、入力がページの上部にある場合は、利便性のメリットがあります。あなたが入力すると、以下のリストの多くが表示されます。これは可能なのですか、誰かがそれをやる経験を持っていますか?ありがとう

答えて

15

合意 - それは使い勝手の良さです。

あなたはjQueryのを使用している場合、これはトリックを行う必要があります。

$('#id-of-text-input').on('focus', function() { 
    document.body.scrollTop = $(this).offset().top; 
}); 
+0

あなたが勝ってくれてありがとう! – Petrogad

+0

ありがとうございました!ページの中央にスクロールするオプションはありますか? – brunodd

+0

document.body.scrollTop = $(this).offset()+(window.innerHeight/2);多分?しかし、画面上のキーボードが入力と重なっていないようにしたいと思うでしょう。あなたはキーボードの人XがデバイスYに何を使うかも分かりません。 –

6

よりよい解決策は次のようになります。

$('#id-of-text-input').on('focus', function() { document.body.scrollTop += this.getBoundingClientRect().top - 10 });

offsetTopので(または.offset().topのjQueryを使用している場合)を返します最初の位置からの距離documentの上からの距離が必要です。

getBoundingClientRect().topは、現在のビューポート位置から要素までの距離を返します。要素の300ピクセル下にスクロールすると、-300が返されます。したがって、距離を+=で追加すると、要素にスクロールします。 -10はオプションです - 上部にスペースを確保します。

+0

これもAngularでも可能ですか? – Siyah

+0

が見つかりません)。最後に – Equiman

+0

が追加されました。 ');' –

関連する問題