フォームを表示するJQuery UIダイアログポップアップがあります。フォームで特定のオプションを選択すると、新しいオプションがフォームに表示され、背が高くなります。これは、メインページにスクロールバーがあり、JQuery UIダイアログにスクロールバーがあるシナリオにつながる可能性があります。この2本のスクロールシナリオは見苦しく、ユーザーを混乱させます。
スクロールバーを表示せずに常にコンテンツに合わせてJQuery UIダイアログを拡大(および縮小)するにはどうすればよいですか?メインページのスクロールバーのみが表示されることを希望します。
更新:jQuery UI 1.8の時点で、作業ソリューション(2番目のコメントで述べたように)は以下を使用することです。
width: 'auto'
AutoResize:trueオプションを使用します。私が説明します:
<div id="whatup">
<div id="inside">Hi there.</div>
</div>
<script>
$('#whatup').dialog(
"resize", "auto"
);
$('#whatup').dialog();
setTimeout(function() {
$('#inside').append("Hello!<br>");
setTimeout(arguments.callee, 1000);
}, 1000);
</script>
これが実際の例です: http://jsbin.com/ubowa
答えは
autoResize:true
ダイアログ作成時のプロパティ。これが機能するためには、ダイアログの高さを設定できません。そのため、その作成者メソッドまたは任意のスタイルを介してダイアログの固定高さをピクセル単位で設定すると、autoResizeプロパティは機能しません。
これはjQuery UI v1.10.3で動作します
$("selector").dialog({height:'auto', width:'auto'});
私はうまく機能する次のプロパティを使用しました:
$('#selector').dialog({
minHeight: 'auto'
});
高さは自動にサポートされています。
幅は違います!
何らかの自動を行うには、表示しているdivのサイズを取得してから、ウィンドウを設定します。
C#コード内.
TheDiv.Style["width"] = "200px";
private void setWindowSize(int width, int height)
{
string widthScript = "$('.dialogDiv').dialog('option', 'width', " + width +");";
string heightScript = "$('.dialogDiv').dialog('option', 'height', " + height + ");";
ScriptManager.RegisterStartupScript(this.Page, this.GetType(),
"scriptDOWINDOWSIZE",
"<script type='text/javascript'>"
+ widthScript
+ heightScript +
"</script>", false);
}
var w = $('#dialogText').text().length;
$("#dialog").dialog('option', 'width', (w * 10));
ダイアログの幅のサイズを変更するために必要なことをしました。
IE7で動作する必要がある場合は、 ドキュメント化されていない、バグあり、サポートされていない{'width':'auto'}
オプションを使用できません。代わりに、次を.dialog()
に追加します。
'open': function(){ $(this).dialog('option', 'width', this.scrollWidth) }
.scrollWidth
に右側のパディングが含まれるかどうかはブラウザーによって異なるため(FirefoxはChromeとは異なります)、主観的な「十分な」ピクセル数を.scrollWidth
に追加するか、独自のピクセルに置き換えることができます幅計算関数。
.dialog()
オプションにwidth: 0
を含めることをお勧めします。この方法では、幅が減少することはなく、増加するだけです。
IE7、IE8、IE9、IE10、IE11、Firefox 30、Chrome 35、およびOpera 22.で動作するようにテスト済み。