2012-03-15 9 views
11

jqueryのUIダイアログを使用して、コンテンツが長すぎてポップアップの高さに収まらない条件&条件ポップアップを受け入れるようにしました。したがって、ダイアログがポップアップするとスクロールバーが表示されますが、スクロールバーが下部に表示されます。コンテンツが高さよりも長い場合、jqueryUIダイアログのスクロールバーが先頭から始める可能性がありますか?

これはダイアログオプションでは可能ではないようです。

トップにスクロールバーでダイアログを開く方法を知っていますか?

+0

あなたがスクロールペインの一番下にある任意のフォーム要素(入力、ボタンなど)を持っていますか?このダイアログには、そのような要素の集中に関するいくつかの問題があるためです。回避策は、ダイアログマークアップの一番上に入力を添付して、ダイアログのオープンコールバックでその入力を削除することです。おそらく問題は[この質問](http://stackoverflow.com/questions/1202079/prevent-jquery-ui-dialog-from-setting-focus-to-first-textbox)に関連しています。 –

答えて

19

最初にフォーカスを受け取ったダイアログのコンテンツの下部に要素があると、ダイアログが開いたときにスクロールバーがその要素にスクロールします。コメントに回避策を試すことができます。これは、問題が実際にフォーカスの問題によって引き起こされた場合に有効です。あるいは、can manually scroll the dialog's content to the topです。あなたはそうのように、オープンコールバックを指定し、そこにトップの位置にダイアログの内容をスクロールすることによって、これを達成することができます

$("#dialog").dialog({ 
     open: function() { 
      $(this).scrollTop(0); 
     } 
    }); 
+0

ありがとうございます。どちらのアプローチも素晴らしいです。デフォルトで最初の入力要素にフォーカスを設定したいのでない限り、jqueryUIのバグのようです。 – devjeff

+1

@devjeff私の答えがあなたを助けてくれたら問題はありません。ありがとう。 –

+0

これは私を悩ませていました。デフォルトは入力に向かって、あるいは少なくとも底部に向かって開くようです。ダイアログの上部に表示される情報はすべて失われているか、またはスクロールして表示する必要があります。ダイアログボックスの上部で開き、ユーザーが下にスクロールできるようにするのが理にかなっています。残念ながら、$(this)は機能せず、autoOpen:trueオプションを使用しているので、ダイアログ( 'open')に使用された同じセレクターを呼び出すこともできませんでした。代わりに、$( 'body')を設定します。scrollTop(0);ロード時にページの上部にダイアログボックスが開きます。 – nwolybug

関連する問題