ユーザーの選択に基づいてコンテンツを表示するモーダルポップアップ(ブートストラップ)があります
これは、ユーザーの選択を確認するために使用したJavaScriptコードです
PlayerMP.getFunctionalDetails = function (type, UserID, SessionID, SessionNo) {
$.ajax({
type: "GET",
url: PlayerMP.URL,
data: "rt=4&type=" + type + "&UserID=" + UserID + "&SessionID=" + SessionID + "&SessionNo=" + SessionNo,
success: function (FunctionalSplitsJS) {
if (FunctionalSplitsJS.indexOf("SessionExpired=1", 0) == -1) {
$("#divFunctionalDetails").html(FunctionalSplitsJS);
switch (type) {
case 1:
$("#divFunctionalsSplit"); //the table goes out of the modal window
break;
case 2:
TallyFunctionalSheet();
$("#divFunctionalsSplit");
break;
case 3:
$("#divFunctionalsSplit");
break;
}
$("#divFunctionalsSplit").modal('show');
}
else
window.location.href = "../Login.aspx?SessionExpired=1";
}
});
}
table-responsive
は動作しているようです)しかし、タブレットの幅に合わせてブラウザのサイズを変更すると、テーブル/モーダルは互いに一致するように自動的にサイズ変更されます。これは、呼び出されるモーダルウィンドウのコードです
<div class="modal fade" id="divFunctionalsSplit" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<div class="table-responsive">
<div id="divFunctionalDetails"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Done</button>
</div>
</div>
</div>
</div>
デフォルトでは、ブートトラップは.modal-dialogの幅を600px(768ピクセル以上の大画面)またはauto(小画面)に設定します。以下のコードでこれを上書きします。
$('#myModal').on('shown.bs.modal', function () {
$(this).find('.modal-dialog').css({width:'auto',
height:'auto',
'max-height':'100%'});
});
(ベース: https://stackoverflow.com/a/16152629/2260496 )
それをより動的にするには、テーブルの幅(jQuery width()またはinnerwidth())を計算し、それに応じてモーダルダイアログの幅を設定する必要があります。
これは少なくとも私にとってはうまくいきました:
.modal-dialog{
position: relative;
display: table; /* <-- This makes the trick */
overflow-y: auto;
overflow-x: auto;
width: auto;
min-width: 300px;
}
これをあなたのコードに変更してください
<div class="modal-dialog" style="width: 95%">
この
<div class="table-responsive" style="width:100%">
モーダルを保持しているdiv内でdisplay: table;
を設定すると、それに応じてサイズが変更されます。私のモーダルはドラッグ可能で、ブラウザのサイズを変更してもサイズは変更されませんが、これは動的なモーダルサイズで見つけた唯一の実行可能なソリューションです。
$('#myModal').on('shown.bs.modal', function () {
$(this).find('.modal-dialog').addClass('modal-lg');
});
私は同じ問題を抱えていましたが、問題はモーダルそのものではないことがわかりました。内部の各要素にIDを追加し、CSSを介してすべての要素にwidth:100%を追加します。
それは私のために働いた。