2012-05-12 17 views
5

jqueryダイアログにデータを入力するためにajax経由でデータを返します。 ajaxは、基本的に、可変量の行を持つhtmlテーブルです。Jqueryダイアログの高さと垂直スクロールバー

ダイアログを展開して特定の垂直サイズ(350px)まで拡大して、垂直スクロールバーを表示するようにしたいと思います。

これはうまくいくようです - ダイアログは行の数に応じて正しくサイズ変更されます。しかし、私は垂直スクロールバーを取得しません - したがって、私は20行を持っている場合は、最後の9を参照してください。

高さが350pxを超えていた場合、どうすれば垂直スクロールバーを強制しますか?

$.ajax({ 
    type: 'POST', 
    url: 'myurl', 
    data: postdata, 
    dataType: 'json', 
    success: function (result) { 
     if (result.success && result.data) { 
      var $dialog = $('<div></div>').html(result.data).dialog({ 
       autoOpen: false, 
       title: 'History', 
       modal: true, 
       height: Math.min((result.rows * 25) + 150, 350), 
       width: 800 
      }); 
      $dialog.dialog('open'); 

     } 
     event.preventDefault(); 
    } 
}); 

答えて

22

コンテンツdivにはCSSプロパティoverflow:autoを追加する必要があります。

$("<div></div>").css({height:"350px", overflow:"auto"}); 

あなたはoverflow-y:autooverflow-x:hidden

+0

これは正常ですが、なぜスクロールバーがスクロールされてダイアログコンテンツの一番下までスクロールされるのですか? – JonoB

+0

スクロールは2方向に動作します。 (ブラウザやjqueryのコントロールとCSSの互換性がないかもしれません)。デモを見てくださいhttp://jsfiddle.net/xYyyd/ –

+0

そのデモは完全ではないようです – JonoB

4

使用CSSの最大の高さONLY垂直スクロールが必要な場合:350px;オーバーフロー:自動; .. be fine be

0

私は固定されたpxの高さを与えたくなかったので、モデルに次のCSS規則を与える解決法が見つかりました。

.modal { 
    display: inline-block !important; 
    max-height: 90%; 
    overflow: auto;/* Or scroll, depending on your needs*/} 

私はそれがあなたのために働くことを望みます。

関連する問題