ایجاد modal های تودرتو با استفاده از jQuery UI و Bootstrap
جمعه 17 دی 1395هدف از ارائه این مقاله ، آموزش چگونگی استفاده از modal های تودرتو با سایز متغیر است . هر modal توسط یک صفحه با استفاده از iFrame ایجاد میگردد . این مقاله به شما آموزش میدهد که به هر تعدادی که نیاز دارید modal تودرتو ایجاد کنید .
کد های این برنامه در انتهای مقاله در اختیار شما قرار داده شده است . خروجی نهایی که ما در انتهای این مقاله آن را خواهیم دید همانند تصویر زیر است :

کد ما شامل فایل BsModal.js خواهد بود .
var oBsModal = { oWinList: [], x: 0, y: 0, oDragItem: null };
function ShowModal(sUrl, iWidth, iHeight, oWin) {
if (oWin + "" == "undefined") oWin = window;
if (iWidth + "" == "undefined") iWidth = $(window).width() - 100;
if (iHeight + "" == "undefined") iHeight = $(window).height() - 150;
oBsModal.oWinList.push(oWin);
var iIndex = oBsModal.oWinList.length;
$(document).on('show.bs.modal', '.modal', function (event) {
var zIndex = 1040 + (10 * $('.modal:visible').length);
$(this).css('z-index', zIndex);
setTimeout(function () {
$('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack');
}, 0);
});
$("#popupContainer" + iIndex).remove();
$("body").append('<div id="popupContainer' + iIndex + '" class="modal fade" role="dialog">' +
'<div id="popupDialog' + iIndex + '" class="modal-dialog" style="width: ' + (iWidth + 30) + 'px">' +
'<div class="modal-content" id="modal-content' + iIndex + '">' +
'<div id="popupTitleBar' + iIndex + '" class="modal-header" style="cursor: move">' +
'<button type="button" class="close" data-dismiss="modal">×</button>' +
'<h4 style="pointer-events: none;" id="popupTitle' + iIndex + '" class="modal-title"></h4>' +
'</div>' +
'<div class="modal-body">' +
'<div id="idDiaLoading' + iIndex + '" style="text-align: center;width:100%; height:' + iHeight + 'px; line-height:' + iHeight + 'px;"><i style"vertical-align: middle" class="fa fa-spinner fa-spin fa-5x"></i></div>' +
'<div id="idDiaOverlay' + iIndex + '" style="background-color: transparent; position: absolute;width: 100%; z-index: 10000; display: none;"></div>' +
'<iframe id="popupFrame' + iIndex + '" name="popupFrame' + iIndex + '" onload="SetPopupTitleBar(this,' + iIndex + ')" src="' + sUrl + '" ' +
'style="display:none; margin: 0px; position: relative; z-index: 202; width:100%; height:100%;background-color:transparent;" scrolling="auto" frameborder="0" allowtransparency="true" width="100%" height="100%"></iframe>' +
'</div>' +
'</div>' +
'</div>' +
'</div>');
$("#popupContainer" + iIndex).modal();
$("#popupFrame" + iIndex).css({ height: iHeight });
$("#popupContainer" + iIndex).on('hidden.bs.modal', function () {
if (oBsModal.oWinList.length > 0) oBsModal.oWinList.length--;
})
DiaMakeDraggable(iIndex);
}
function DiaMakeDraggable(id) {
var o = $("#idDiaOverlay" + id);
$("#modal-content" + id).resizable({
alsoResize: "#popupFrame" + id,
start: function (event, ui) {
o.height(o.parent().height());
o.show();
},
stop: function (event, ui) {
o.hide(); ;
}
});
$("#modal-content" + id).draggable({
start: function (event, ui) {
o.height(o.parent().height());
o.show();
},
stop: function (event, ui) {
o.hide(); ;
}
});
}
function HideModal() {
var iIndex = oBsModal.oWinList.length;
$("#popupContainer" + iIndex).modal("hide");
}
function GetModalWin() {
return oBsModal.oWinList[oBsModal.oWinList.length - 1];
}
function SetPopupTitleBar(oIframe, iIndex) {
try {
$("#popupTitle" + iIndex).html(oIframe.contentWindow.document.title);
} catch (ex) {
$("#popupTitle" + iIndex).hide();
}
$("#idDiaLoading" + iIndex).hide();
$("#popupFrame" + iIndex).show();
}
این فایل این امکان را برای شما فراهم می آورد که :
1. با استفاده از iFrame یک URL را در یک Modal باز کنید .
2. یک dialog تو در تو ایجاد کنید .
3. زمانی که صفحه در حال بارگذاری است یک spinner نمایش داده شود .
4. یک صفحه جدید را در یک dialog تمام صفحه باز کند .
5. توانایی جابجایی modal در تمام نقاط صفحه .
6. توانایی ویرایش ساز و اندازه modal
کتابخانه های خارجی ای که در این برنامه استفاده شده است بصورت زیر است :
1. jQuery
2. jQuery UI
3. Bootstrap
4. Font-awesome
استفاده از کد :
برای استفاده از این کد ، فایل BsModal.js را به صفحه اضافه کنید که modal اول را باز کند. کلید تابع ()ShowModalمیباشد . این پارامتر های زیر را می پذیرد .
sUrl - آدرس صفحه ای باید بارگذاری شود .
iWidth - عرض modal میباشد . اختیاری میباشد .
iHeight - ارتفاع modal میباشد . این نیز اختیاری میباشد .
oWin - اشیاء Windows از فراخوانی صفحه modal . اختیاری است .
از صفحه اصلی (Default.htm) تابع ()ShowModal می تواند همانند زیر مورد استفاده قرار بگیرد :
<input type="button" class="btn btn-info" value="Open Modal1.htm" onclick="ShowModal('Modal1.htm',300,430)">
از صفحه dialog ، تابع ()ShowModal همانند زیر مورد استفاده قرار میگیرد .
<input type="button" class="btn btn-info" value="Open Modal2.htm" onclick="parent.ShowModal('Modal2.htm',300,350,window)">
یک Modal Dialog میتواند با فراخوانی تابع HideModal() خارج شود :
<button type="button" class="btn btn-default" onclick='parent.HideModal()'>Cancel</button>
- Jquery
- 3k بازدید
- 14 تشکر