一、Bootstrap彈出框使用過JQuery UI應該知道,它裡面有一個dialog的彈出框組件,功能也很豐富。與jQuery UI的dialog類似,Bootstrap裡面也內置了彈出框組件。打開bootstrap 文檔可以看到它的dialog是直接嵌入到bootstrap.js和bootstr ...
一、Bootstrap彈出框
使用過JQuery UI應該知道,它裡面有一個dialog的彈出框組件,功能也很豐富。與jQuery UI的dialog類似,Bootstrap裡面也內置了彈出框組件。打開bootstrap 文檔可以看到它的dialog是直接嵌入到bootstrap.js和bootstrap.css裡面的,也就是說,只要我們引入了bootstrap的文件,就可以直接使用它的dialog組件,是不是很方便。本篇我們就結合新增編輯的功能來介紹下bootstrap dialog的使用。廢話不多說,直接看來它如何使用吧。
1、cshtml界面代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
< div class = "modal fade" id = "myModal" tabindex = "-1" role = "dialog" aria-labelledby = "myModalLabel" >
< div class = "modal-dialog" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close" >< span aria-hidden = "true" >×</ span ></ button >
< h4 class = "modal-title" id = "myModalLabel" >新增</ h4 >
</ div >
< div class = "modal-body" >
< div class = "form-group" >
< label for = "txt_departmentname" >部門名稱</ label >
< input type = "text" name = "txt_departmentname" class = "form-control" id = "txt_departmentname" placeholder = "部門名稱" >
</ div >
< div class = "form-group" >
< label for = "txt_parentdepartment" >上級部門</ label >
< input type = "text" name = "txt_parentdepartment" class = "form-control" id = "txt_parentdepartment" placeholder = "上級部門" >
</ div >
< div class = "form-group" >
< label for = "txt_departmentlevel" >部門級別</ label >
< input type = "text" name = "txt_departmentlevel" class = "form-control" id = "txt_departmentlevel" placeholder = "部門級別" >
</ div >
< div class = "form-group" >
< label for = "txt_statu" >描述</ label >
< input type = "text" name = "txt_statu" class = "form-control" id = "txt_statu" placeholder = "狀態" >
</ div >
</ div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-default" data-dismiss = "modal" >< span class = "glyphicon glyphicon-remove" aria-hidden = "true" ></ span >關閉</ button >
< button type = "button" id = "btn_submit" class = "btn btn-primary" data-dismiss = "modal" >< span class = "glyphicon glyphicon-floppy-disk" aria-hidden = "true" ></ span >保存</ button >
</ div >
</ div >
</ div >
</ div >
|
最外面的div定義了dialog的隱藏。我們重點來看看第二層的div
?1 |
< div class = "modal-dialog" role = "document" >
|
這個div定義了dialog,對應的class有三種尺寸的彈出框,如下:
?1 2 3 |
< div class = "modal-dialog" role = "document" >
< div class = "modal-dialog modal-lg" role = "document" >
< div class = "modal-dialog modal-full" role = "document" >
|
第一種表示預設類型的彈出框;第二種表示增大的彈出框;第三種表示滿屏的彈出框。role="document"表示彈出框的對象的當前的document。
2、js裡面將dialog show出來。
預設情況下,我們的彈出框是隱藏的,只有在用戶點擊某個操作的時候才會show出來。來看看js裡面是如何處理的吧:
1 2 3 4 5 |
//註冊新增按鈕的事件
$( "#btn_add" ).click( function () {
$( "#myModalLabel" ).text( "新增" );
$( '#myModal' ).modal();
});
|
對,你沒有看錯,只需要這一句就能show出這個dialog.
?1 |
$( '#myModal' ).modal();
|
3、效果展示
新增效果
編輯效果
4、說明
彈出框顯示後,點擊界面上其他地方以及按Esc鍵都能隱藏彈出框,這樣使得用戶的操作更加友好。關於dialog裡面關閉和保存按鈕的事件的初始化在項目裡面一般是封裝過的,這個我們待會來看。
二、確認取消提示框
這種類型的提示框一般用於某些需要用戶確定才能進行的操作,比較常見的如:刪除操作、提交訂單操作等。
1、使用bootstrap彈出框確認取消提示框
介紹這個組件之前,就得說說組件封裝了,我們知道,像彈出框、確認取消提示框、信息提示框這些東西項目裡面肯定是多處都要調用的,所以我們肯定是要封裝組件的。下麵就來看看我們封裝的缺乏取消提示框。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
( function ($) {
window.Ewin = function () {
var html = '<div id="[Id]" class="modal fade" role="dialog" aria-labelledby="modalLabel">' +
'<div class="modal-dialog modal-sm">' +
'<div class="modal-content">' +
'<div class="modal-header">' +
'<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>' +
'<h4 class="modal-title" id="modalLabel">[Title]</h4>' +
'</div>' +
'<div class="modal-body">' +
'<p>[Message]</p>' +
'</div>' +
'<div class="modal-footer">' +
'<button type="button" class="btn btn-default cancel" data-dismiss="modal">[BtnCancel]</button>' +
'<button type="button" class="btn btn-primary ok" data-dismiss="modal">[BtnOk]</button>' +
'</div>' +
'</div>' +
'</div>' +
'</div>' ;
var dialogdHtml = '<div id="[Id]" class="modal fade" role="dialog" aria-labelledby="modalLabel">' +
'<div class="modal-dialog">' +
'<div class="modal-content">' +
'<div class="modal-header">' +
'<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>' +
'<h4 class="modal-title" id="modalLabel">[Title]</h4>' +
'</div>' +
'<div class="modal-body">' +
'</div>' +
'</div>' +
'</div>' +
'</div>' ;
var reg = new RegExp( "\\[([^\\[\\]]*?)\\]" , 'igm' );
var generateId = function () {
var date = new Date();
return 'mdl' + date.valueOf();
}
var init = function (options) {
options = $.extend({}, {
title: "操作提示" ,
message: "提示內容" ,
btnok: "確定" ,
btncl: "取消" ,
width: 200,
auto: false
}, options || {});
var modalId = generateId();
var content = html.replace(reg, function (node, key) {
return {
Id: modalId,
Title: options.title,
Message: options.message,
BtnOk: options.btnok,
BtnCancel: options.btncl
}[key];
});
$( 'body' ).append(content);
$( '#' + modalId).modal({
width: options.width,
backdrop: 'static'
});
$( '#' + modalId).on( 'hide.bs.modal' , function (e) {
$( 'body' ).find( '#' + modalId).remove();
});
return modalId;
}
return {
alert: function (options) {
if ( typeof options == 'string' ) {
options = {
message: options
};
}
var id = init(options);
var modal = $( '#' + id);
modal.find( '.ok' ).removeClass( 'btn-success' ).addClass( 'btn-primary' );
modal.find( '.cancel' ).hide();
return {
id: id,
on: function (callback) {
if (callback && callback instanceof Function) {
modal.find( '.ok' ).click( function () { callback( true ); });
}
},
hide: function (callback) {
if (callback && callback instanceof Function) {
modal.on( 'hide.bs.modal' , function (e) {
callback(e);
});
}
}
};
},
confirm: function (options) {
var id = init(options);
var modal = $( '#' + id);
modal.find( '.ok' ).removeClass( 'btn-primary' ).addClass( 'btn-success' );
modal.find( '.cancel' ).show();
return {
id: id,
on: function (callback) {
if (callback && callback instanceof Function) {
modal.find( '.ok' ).click( function () { callback( true ); });
modal.find( '.cancel' ).click( function () { callback( false ); });
}
},
hide: function (callback) {
if (callback && callback instanceof Function) {
modal.on( 'hide.bs.modal' , function (e) {
callback(e);
});
}
}
};
},
dialog: function (options) {
options = $.extend({}, {
title: 'title' ,
url: '' ,
width: 800,
height: 550,
onReady: function () { },
onShown: function (e) { }
}, options || {});
var modalId = generateId();
var content = dialogdHtml.replace(reg, function (node, key) {
return {
Id: modalId,
Title: options.title
}[key];
});
$( 'body' ).append(content);
var target = $( '#' + modalId);
target.find( '.modal-body' ).load(options.url);
if (options.onReady())
options.onReady.call(target);
target.modal();
target.on( 'shown.bs.modal' , function (e) {
if (options.onReady(e))
options.onReady.call(target, e);
});
target.on( 'hide.bs.modal' , function (e) {
$( 'body' ).find(target).remove();
});
}
}
}();
})(jQuery);
|
不瞭解組件封裝的朋友可以先看看相關文章。這裡我們的確認取消提示框主要用到了confirm這個屬性對應的方法。還是來看看如何調用吧:
?