对jQuery blockUI插件进行了小的封装扩展,支持confirm、alert、dialog弹出窗口提示信息,支持按钮回调事件。可以自定义css样式、覆盖blockUI的样式等

    首先要到jquery blockUI 官方网址:http://malsup.com/jquery/block/

    下载jquery.blockUI JS lib:http://malsup.com/jquery/block/jquery.blockUI.js?v2.38

    而且还需要jquery lib:http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js

    jquery.blockUI.dialog.js

    1. /***
    2. * jquery blockUI Dialog plugin
    3. * v1.1
    4. * @createDate -- 2012-1-4
    5. * @author hoojo
    6. * @email hoojo_@126.com
    7. * @requires jQuery v1.2.3 or later, jquery.blockUI-2.3.8
    8. * Copyright (c) 2012 M. hoo
    9. * Dual licensed under the MIT and GPL licenses:
    10. * http://hoojo.cnblogs.com
    11. * http://blog.csdn.net/IBM_hoojo
    12. **/
    13. ;(function ($) {
    14. var _dialog = $.blockUI.dialog = {};
    15. // dialog 默认配置
    16. var defaultOptions = {
    17. css: {
    18. padding: '8px',
    19. opacity: .7,
    20. color: '#ffffff',
    21. border: 'none',
    22. 'border-radius': '10px',
    23. backgroundColor: '#000000'
    24. },
    25. // 默认回调函数 取消或隐藏 dialog
    26. emptyHandler: function () {
    27. $.unblockUI();
    28. },
    29. // 用户回调函数
    30. callbackHandler: function (fn) {
    31. return function () {
    32. fn();
    33. defaultOptions.emptyHandler();
    34. };
    35. },
    36. // confirm 提示 html元素
    37. confirmElement: function (settings) {
    38. settings = settings || {};
    39. var message = settings.message || "default confirm message!";
    40. var okText = settings.okText || "ok";
    41. var cancelText = settings.cancelText || "cancel";
    42. if (typeof settings.onOk !== "function") {
    43. settings.onOk = this.emptyHandler;
    44. }
    45. if (typeof settings.onCancel !== "function") {
    46. settings.onCancel = this.emptyHandler;
    47. }
    48. var okCallback = this.callbackHandler(settings.onOk) || this.emptyHandler;
    49. var cancelCallback = this.callbackHandler(settings.onCancel) || this.emptyHandler;
    50. var html = [
    51. '<div class="dialog confirm">',
    52. '<p>',
    53. message,
    54. '</p>',
    55. '<input type="button" value="',
    56. okText,
    57. '" class="btn ok-btn"/>',
    58. '<input type="button" value="',
    59. cancelText,
    60. '" class="btn cancel-btn"/>'
    61. ].join("");
    62. var $el = $(html);
    63. $el.find(":button").get(0).onclick = okCallback;
    64. $el.find(":button:last").get(0).onclick = cancelCallback;
    65. return $el;
    66. },
    67. // alert 提示html元素
    68. alertElement: function (settings) {
    69. settings = settings || {};
    70. var message = settings.message || "default alert message!";
    71. var okText = settings.okText || "ok";
    72. if (typeof settings.onOk !== "function") {
    73. settings.onOk = this.emptyHandler;
    74. }
    75. var okCallback = this.callbackHandler(settings.onOk) || this.emptyHandler;
    76. var html = [
    77. '<div class="dialog alert">',
    78. '<p>',
    79. message,
    80. '</p>',
    81. '<input type="button" value="',
    82. okText,
    83. '" class="btn ok-btn"/>'
    84. ].join("");
    85. var $el = $(html);
    86. $el.find(":button:first").get(0).onclick = okCallback;
    87. return $el;
    88. }
    89. };
    90. var _options = defaultOptions;
    91. // 对外公开的dialog提示html元素,提供配置、覆盖
    92. $.blockUI.dialog.confirmElement = function () {
    93. return _options.confirmElement(arguments[0]);
    94. };
    95. $.blockUI.dialog.alertElement = function () {
    96. return _options.alertElement(arguments[0]);
    97. };
    98. // 提供jquery 插件方法
    99. $.extend({
    100. confirm: function (opts) {
    101. var i = (typeof opts === "object") ? 1 : 0;
    102. var defaults = {
    103. message: arguments[i++] || "default confirm message!",
    104. onOk: arguments[i++] || _options.emptyHandler(),
    105. onCancel: arguments[i++] || _options.emptyHandler(),
    106. okText: arguments[i++] || "ok",
    107. cancelText: arguments[i] || "cancel"
    108. };
    109. opts = opts || {};
    110. opts.css = $.extend({}, _options.css, opts.css);
    111. // 覆盖默认配置
    112. var settings = $.extend({}, _options, defaults, opts);
    113. settings = $.extend(settings, { message: _dialog.confirmElement(settings) });
    114. settings = $.extend({}, $.blockUI.defaults, settings);
    115. $.blockUI(settings);
    116. },
    117. alert: function (opts) {
    118. var i = (typeof opts === "object") ? 1 : 0;
    119. var defaults = {
    120. message: arguments[i++] || "default alert message!",
    121. onOk: arguments[i++] || _options.emptyHandler(),
    122. okText: arguments[i] || "ok"
    123. };
    124. opts = opts || {};
    125. opts.css = $.extend({}, _options.css, opts.css);
    126. var settings = $.extend({}, _options, defaults, opts);
    127. settings = $.extend(settings, { message: _dialog.alertElement(settings) });
    128. settings = $.extend({}, $.blockUI.defaults, settings);
    129. $.blockUI(settings);
    130. },
    131. // dialog提示
    132. dialog: function (opts) {
    133. var settings = $.extend({}, $.blockUI.defaults, _options, opts || {});
    134. $.blockUI(settings);
    135. },
    136. // 移除dialog提示框
    137. removeDialog: function () {
    138. _options.emptyHandler();
    139. }
    140. });
    141. })(jQuery);

    应用样式文件block.dialog.css

    dialog是全局样式,btn是所有按钮的样式、ok-btn是ok按钮样式、cancel-btn是取消按钮样式

    1. .dialog {
    2. font-size: 12px;
    3. }
    4. .dialog .btn {
    5. border: 1px solid white;
    6. border-radius: 5px;
    7. min-width: 25%;
    8. width: auto;
    9. }
    10. .dialog .ok-btn {
    11. background-color: #ccc;
    12. }
    13. .dialog .cancel-btn {
    14. /*background-color: #aeface;*/
    15. margin-left: 10%;
    16. }

    examples.html

    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    2. <html>
    3. <head>
    4. <title>blockUI Dialog Examples</title>
    5. <meta http-equiv="author" content="hoojo">
    6. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    7. <link rel="stylesheet" href="blockUI/block.dialog.css" />
    8. <script type="text/javascript" charset="UTF-8" src="mobile/jquery-1.6.4.js"></script>
    9. <script type="text/javascript" charset="UTF-8" src="blockUI/jquery.blockUI-2.3.8.js"></script>
    10. <script type="text/javascript" charset="UTF-8" src="blockUI/jquery.blockUI.dialog-1.1.js"></script>
    11. <script type="text/javascript">
    12. ;(function ($) {
    13. $(function () {
    14. // dialog 提示框
    15. $("#dialog").click(function () {
    16. //$.dialog();
    17. //$.dialog({message: $("#callback")});
    18. $.dialog({
    19. //theme: true, // 设置主题需要jquery UI http://www.malsup.com/jquery/block/theme.html
    20. title: "dialog",
    21. message: $("#callback"),
    22. fadeIn: 1000,
    23. fadeOut: 1200
    24. });
    25. setTimeout($.removeDialog, 2000);
    26. });
    27. // 带确定、取消按钮提示框,支持事件回调,及message等属性配置
    28. $("#confirm").click(function () {
    29. $.confirm({
    30. message: "你确定要删除吗?",
    31. okText: "确定",
    32. cancelText: "取消",
    33. onOk: function () {
    34. alert("你点击了确定按钮");
    35. },
    36. onCancel: function () {
    37. alert("你点击了取消按钮");
    38. }
    39. });
    40. });
    41. // 警告提示框 对象模式配置css、message、按钮文本提示
    42. $("#alert").click(function () {
    43. $.alert({
    44. message: "你确定要删除吗?",
    45. okText: "确定",
    46. css: {
    47. "background-color": "white",
    48. "color": "red"
    49. },
    50. onOk: function () {
    51. alert("你点击了确定按钮");
    52. }
    53. });
    54. });
    55. // 非对象配置属性,多个参数配置
    56. /**
    57. $.confirm 方法参数config配置介绍:
    58. 当第一个参数是一个对象:
    59. 对象中可以出现以下属性配置,并且可以出现$.blockUI的配置
    60. {
    61. message: arguments[i++] || "default confirm message!",
    62. onOk: arguments[i++] || _options.emptyHandler(),
    63. onCancel: arguments[i++] || _options.emptyHandler(),
    64. okText: arguments[i++] || "ok",
    65. cancelText: arguments[i] || "cancel"
    66. }
    67. message 是提示框的提示信息
    68. onOk是确定按钮的click回调函数
    69. onCancel 是取消按钮的click事件回调方法
    70. okText是ok按钮的文字 默认是ok
    71. cancelText是cancel按钮的文本内容
    72. 如果第一个参数不是一个对象,那么
    73. 参数1表示 message 及提示文字
    74. 参数2表示ok按钮的click事件回调函数
    75. 参数3表示cancel按钮的click事件回调函数
    76. 参数4表示ok按钮的文本
    77. 参数5表示cancel按钮的文本内容
    78. 注意:如果第一参数是一个对象,后面又出现了相应的参数配置;这种情况下对象配置优先于
    79. 后面的参数配置,而且参数的位置也会改变:
    80. 参数1是对象配置
    81. 参数2表示 message 及提示文字
    82. 参数3表示ok按钮的click事件回调函数
    83. 参数4表示cancel按钮的click事件回调函数
    84. 参数5表示ok按钮的文本
    85. 参数6表示cancel按钮的文本内容
    86. */
    87. $("#confirm2").click(function () {
    88. $.confirm({ message: "is a message", timeout: 3000 }, "message", function () {
    89. alert("success");
    90. }, function () {
    91. alert("failure");
    92. }, "按钮");
    93. });
    94. /**
    95. 第一个参数是对象配置,当对象配置中出现的选项会覆盖后面的参数配置
    96. $.alert 方法 config 介绍:
    97. 当第一个参数 是一个对象:
    98. {
    99. message: arguments[i++] || "default alert message!",
    100. onOk: arguments[i++] || _options.emptyHandler(),
    101. okText: arguments[i] || "ok"
    102. }
    103. message 是提示框的提示信息
    104. onOk是确定按钮回调函数
    105. okText是ok按钮的文字 默认是ok
    106. 当第一个参数不是一个对象的情况下,那么
    107. 参数1表示 message 及提示文字
    108. 参数2表示ok按钮的click事件
    109. 参数3表示ok按钮的文本
    110. 注意:如果第一个参数是一个对象,对象中出现的配置:message、onOk、okText,这些配置将会
    111. 覆盖后面的配置,也就是说这些配置在第一个参数中出现后,后面的参数就不需要
    112. */
    113. $("#alert2").click(function () {
    114. $.alert({
    115. css: {
    116. "background-color": "red"
    117. },
    118. timeout: 1200,
    119. onOk: function () {
    120. alert("确定");
    121. }
    122. },
    123. "你有一条消息",
    124. function () {
    125. alert("被覆盖");
    126. }, "yes?");
    127. });
    128. var _confirm = function (msg) {
    129. $.confirm({
    130. message: msg,
    131. onOk: function () {
    132. alert("你点击了确定按钮");
    133. },
    134. onCancel: function () {
    135. alert("你点击了取消按钮");
    136. }
    137. });
    138. };
    139. $("#confirm3").click(function () {
    140. _confirm("message");
    141. });
    142. var _alert = function (msg) {
    143. $.alert({
    144. message: msg,
    145. css: {
    146. "background-color": "white",
    147. "color": "red"
    148. },
    149. onOk: function () {
    150. alert("你点击了确定按钮");
    151. }
    152. });
    153. }
    154. $("#alert3").click(function () {
    155. _alert();
    156. });
    157. });
    158. })(jQuery);
    159. </script>
    160. </head>
    161. <body>
    162. <ul>
    163. <h2>jQuery blockUI Dialog Demos</h2>
    164. <li>dialog demo <input type="button" value="dialog" id="dialog"/></li>
    165. <li>confirm callback demos<input type="button" value="confirm" id="confirm"/></li>
    166. <li>confirm callback demos 2<input type="button" value="confirm" id="confirm2"/></li>
    167. <li>confirm callback demos 3<input type="button" value="confirm" id="confirm3"/></li>
    168. <li>alert callback demos<input type="button" value="alert" id="alert"/></li>
    169. <li>alert callback demos 2<input type="button" value="alert" id="alert2"/></li>
    170. <li>alert callback demos 3<input type="button" value="alert" id="alert3"/></li>
    171. </ul>
    172. <div style="display: none;">
    173. <div id="callback">
    174. <p>ok or cancel? asdfaf jQuery blockUI Dialog Demos jQuery blockUI Dialog Demos jQuery blockUI Dialog Demos jQuery blockUI Dialog Demos</p>
    175. <input type="button" value="OK" class="btn ok-btn"/>
    176. <input type="button" value="Cancel" class="btn cancel-btn"/>
    177. </div>
    178. </div>
    179. </body>
    180. </html>

    截图效果

    confirm

    alert