前言

使用$.messager.defaults重写默认值对象。下载该插件翻译源码

消息窗口提供了不同的消息框风格,包含alert(警告框), confirm(确认框), prompt(提示框), progress(进度框)等。所有的消息框都是异步的。用户可以在交互消息之后使用回调函数去处理结果或做一些自己需要处理的事情。

源码

  1. /**
  2. * jQuery EasyUI 1.3.2
  3. *
  4. *翻译 :qq 1364386878 消息窗口
  5. */
  6. (function ($) {
  7.  
  8. function show(el, type, speed, timeout) {
  9. var win = $(el).window("window");
  10. if (!win) {
  11. return;
  12. }
  13. switch (type) {
  14. case null:
  15. win.show();
  16. break;
  17. case "slide":
  18. win.slideDown(speed);
  19. break;
  20. case "fade":
  21. win.fadeIn(speed);
  22. break;
  23. case "show":
  24. win.show(speed);
  25. break;
  26. }
  27. var timer = null;
  28. if (timeout > 0) {
  29. timer = setTimeout(function () {
  30. hide(el, type, speed);
  31. }, timeout);
  32. }
  33. win.hover(function () {
  34. if (timer) {
  35. clearTimeout(timer);
  36. }
  37. }, function () {
  38. if (timeout > 0) {
  39. timer = setTimeout(function () {
  40. hide(el, type, speed);
  41. }, timeout);
  42. }
  43. });
  44. };
  45.  
  46. function hide(el, type, speed) {
  47. if (el.locked == true) {
  48. return;
  49. }
  50. el.locked = true;
  51. var win = $(el).window("window");
  52. if (!win) {
  53. return;
  54. }
  55. switch (type) {
  56. case null:
  57. win.hide();
  58. break;
  59. case "slide":
  60. win.slideUp(speed);
  61. break;
  62. case "fade":
  63. win.fadeOut(speed);
  64. break;
  65. case "show":
  66. win.hide(speed);
  67. break;
  68. }
  69. setTimeout(function () {
  70. $(el).window("destroy");
  71. }, speed);
  72. };
  73. //在屏幕右下角显示一条消息窗口。该选项参数是一个可配置的对象:
  74. //showType:定义将如何显示该消息。可用值有:null,slide,fade,show。默认:slide。
  75. //showSpeed:定义窗口显示的过度时间。默认:600毫秒。
  76. //width:定义消息窗口的宽度。默认:250px。
  77. //height:定义消息窗口的高度。默认:100px。
  78. //title:在头部面板显示的标题文本。
  79. //msg:显示的消息文本。
  80. //style:定义消息窗体的自定义样式。
  81. //timeout:如果定义为0,消息窗体将不会自动关闭,除非用户关闭他。如果定义成非0的树,消息窗体将在超时后自动关闭。默认:4秒
  82.  
  83. function _showMassager(_c) {
  84. var options = $.extend({}, $.fn.window.defaults, {
  85. collapsible: false,
  86. minimizable: false,
  87. maximizable: false,
  88. shadow: false,
  89. draggable: false,
  90. resizable: false,
  91. closed: true,
  92. style: {
  93. left: "",
  94. top: "",
  95. right: 0,
  96. zIndex: $.fn.window.defaults.zIndex++,
  97. bottom: -document.body.scrollTop - document.documentElement.scrollTop
  98. },
  99.  
  100. onBeforeOpen: function () {
  101. show(this, options.showType, options.showSpeed, options.timeout);
  102. return false;
  103. },
  104.  
  105. onBeforeClose: function () {
  106. hide(this, options.showType, options.showSpeed);
  107. return false;
  108. }
  109. },
  110. {
  111. title: "",
  112. width: 250,
  113. height: 100,
  114. showType: "slide",
  115. showSpeed: 600,
  116. msg: "",
  117. timeout: 4000
  118. }, _c);
  119. options.style.zIndex = $.fn.window.defaults.zIndex++;
  120. var body = $("<div class=\"messager-body\"></div>").html(options.msg).appendTo("body");
  121. body.window(options);
  122. body.window("window").css(options.style);
  123. body.window("open");
  124. return body;
  125. };
  126. //创建对话框
  127. function createDialog(title, content, buttons) {
  128. var win = $("<div class=\"messager-body\"></div>").appendTo("body");
  129. win.append(content);
  130. if (buttons) {
  131. var tb = $("<div class=\"messager-button\"></div>").appendTo(win);
  132. for (var button in buttons) {
  133. $("<a></a>").attr("href", "javascript:void(0)").text(button).css("margin-left", 10).bind("click", eval(buttons[button])).appendTo(tb).linkbutton();
  134. }
  135. }
  136. win.window({
  137. title: title,
  138. noheader: (title ? false : true),
  139. width: 300,
  140. height: "auto",
  141. modal: true,
  142. collapsible: false,
  143. minimizable: false,
  144. maximizable: false,
  145. resizable: false,
  146. onClose: function () {
  147. setTimeout(function () {
  148. win.window("destroy");
  149. }, 100);
  150. }
  151. });
  152. win.window("window").addClass("messager-window");
  153. win.children("div.messager-button").children("a:first").focus();
  154. return win;
  155. };
  156.  
  157. //方法配置
  158. $.messager = {
  159. //在屏幕右下角显示一条消息窗口。该选项参数是一个可配置的对象:
  160. //showType:定义将如何显示该消息。可用值有:null,slide,fade,show。默认:slide。
  161. //showSpeed:定义窗口显示的过度时间。默认:600毫秒。
  162. //width:定义消息窗口的宽度。默认:250px。
  163. //height:定义消息窗口的高度。默认:100px。
  164. //title:在头部面板显示的标题文本。
  165. //msg:显示的消息文本。
  166. //style:定义消息窗体的自定义样式。
  167. //timeout:如果定义为0,消息窗体将不会自动关闭,除非用户关闭他。如果定义成非0的树,消息窗体将在超时后自动关闭。默认:4秒
  168. show: function (options) {
  169. return _showMassager(options);
  170. },
  171. //显示警告窗口。参数:
  172. //title:在头部面板显示的标题文本。
  173. //msg:显示的消息文本。
  174. //icon:显示的图标图像。可用值有:error,question,info,warning。
  175. //fn: 在窗口关闭的时候触发该回调函数
  176. alert: function (title, msg, icon, fn) {
  177. var content = "<div>" + msg + "</div>";
  178. switch (icon) {
  179. case "error":
  180. content = "<div class=\"messager-icon messager-error\"></div>" + content;
  181. break;
  182. case "info":
  183. content = "<div class=\"messager-icon messager-info\"></div>" + content;
  184. break;
  185. case "question":
  186. content = "<div class=\"messager-icon messager-question\"></div>" + content;
  187. break;
  188. case "warning":
  189. content = "<div class=\"messager-icon messager-warning\"></div>" + content;
  190. break;
  191. }
  192. content += "<div style=\"clear:both;\"/>";
  193. var buttons = {};
  194. buttons[$.messager.defaults.ok] = function () {
  195. win.window("close");
  196. if (fn) {
  197. fn();
  198. return false;
  199. }
  200. };
  201. var win = createDialog(title, content, buttons);
  202. return win;
  203. },
  204. //显示一个包含“确定”和“取消”按钮的确认消息窗口。参数:
  205. //title:在头部面板显示的标题文本。
  206. //msg:显示的消息文本。
  207. //fn(b): 当用户点击“确定”按钮的时侯将传递一个true值给回调函数,否则传递一个false值。
  208. confirm: function (title, msg, fn) {
  209. var content = "<div class=\"messager-icon messager-question\"></div>" + "<div>" + msg + "</div>" + "<div style=\"clear:both;\"/>";
  210. var buttons = {};
  211. buttons[$.messager.defaults.ok] = function () {
  212. win.window("close");
  213. if (fn) {
  214. fn(true);
  215. return false;
  216. }
  217. };
  218. buttons[$.messager.defaults.cancel] = function () {
  219. win.window("close");
  220. if (fn) {
  221. fn(false);
  222. return false;
  223. }
  224. };
  225. var win = createDialog(title, content, buttons);
  226. return win;
  227. },
  228. //显示一个用户可以输入文本的并且带“确定”和“取消”按钮的消息窗体。参数:
  229. //title:在头部面板显示的标题文本。
  230. //msg:显示的消息文本。
  231. //fn(val): 在用户输入一个值参数的时候执行的回调函数
  232. prompt: function (title, msg, fn) {
  233. var content = "<div class=\"messager-icon messager-question\"></div>" + "<div>" + msg + "</div>" + "<br/>" + "<div style=\"clear:both;\"/>" + "<div><input class=\"messager-input\" type=\"text\"/></div>";
  234. var buttons = {};
  235. buttons[$.messager.defaults.ok] = function () {
  236. win.window("close");
  237. if (fn) {
  238. fn($(".messager-input", win).val());
  239. return false;
  240. }
  241. };
  242. buttons[$.messager.defaults.cancel] = function () {
  243. win.window("close");
  244. if (fn) {
  245. fn();
  246. return false;
  247. }
  248. };
  249. var win = createDialog(title, content, buttons);
  250. win.children("input.messager-input").focus();
  251. return win;
  252. },
  253. //显示一个进度消息窗体。
  254. //属性定义为:
  255. //title:在头部面板显示的标题文本。默认:空。
  256. //msg:显示的消息文本。默认:空。
  257. //text:在进度条上显示的文本。默认:undefined。
  258. //interval:每次进度更新的间隔时间。默认:300毫秒。
  259.  
  260. //方法定义为:
  261. //bar:获取进度条对象。
  262. //close:关闭进度窗口
  263. progress: function (options) {
  264. var methods = {
  265. bar: function () {
  266. return $("body>div.messager-window").find("div.messager-p-bar");
  267. },
  268. close: function () {
  269. var win = $("body>div.messager-window>div.messager-body:has(div.messager-progress)");
  270. if (win.length) {
  271. win.window("close");
  272. }
  273. }
  274. };
  275. if (typeof options == "string") {
  276. var method = methods[options];
  277. return method();
  278. }
  279. var opts = $.extend({ title: "", msg: "", text: undefined, interval: 300 }, options || {});
  280. var pbar = "<div class=\"messager-progress\"><div class=\"messager-p-msg\"></div><div class=\"messager-p-bar\"></div></div>";
  281. var win = createDialog(opts.title, pbar, null);
  282. win.find("div.messager-p-msg").html(opts.msg);
  283. var bar = win.find("div.messager-p-bar");
  284. bar.progressbar({ text: opts.text });
  285. win.window({
  286. closable: false, onClose: function () {
  287. if (this.timer) {
  288. clearInterval(this.timer);
  289. }
  290. $(this).window("destroy");
  291. }
  292. });
  293. if (opts.interval) {
  294. win[0].timer = setInterval(function () {
  295. var v = bar.progressbar("getValue");
  296. v += 10;
  297. if (v > 100) {
  298. v = 0;
  299. }
  300. bar.progressbar("setValue", v);
  301. }, opts.interval);
  302. }
  303. return win;
  304. }
  305. };
  306. //默认属性
  307. $.messager.defaults = {
  308. ok: "Ok",//确定按钮文本
  309. cancel: "Cancel"//取消按钮文本
  310. };
  311. })(jQuery);

示例代码

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Basic Messager - jQuery EasyUI Demo</title>
  6. <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
  7. <link rel="stylesheet" type="text/css" href="../../themes/icon.css">
  8. <link rel="stylesheet" type="text/css" href="../demo.css">
  9. <script type="text/javascript" src="../../jquery-1.8.0.min.js"></script>
  10. <script src="../../plugins/jquery.parser.js"></script>
  11. <script src="../../plugins/jquery.linkbutton.js"></script>
  12. <script src="../../plugins/jquery.draggable.js"></script>
  13. <script src="../../plugins/jquery.resizable.js"></script>
  14. <script src="../../plugins/jquery.panel.js"></script>
  15. <script src="../../plugins/jquery.window.js"></script>
  16. <script src="../../plugins/jquery.progressbar.js"></script>
  17. <script src="../../plugins/jquery.messager.js"></script>
  18. </head>
  19. <body>
  20. <h2>Basic Messager</h2>
  21. <div class="demo-info">
  22. <div class="demo-tip icon-tip"></div>
  23. <div>Click on each button to see a distinct message box.</div>
  24. </div>
  25. <div style="margin:10px 0;">
  26. <a href="#" class="easyui-linkbutton" onclick="show()">Show</a>
  27. <a href="#" class="easyui-linkbutton" onclick="slide()">Slide</a>
  28. <a href="#" class="easyui-linkbutton" onclick="fade()">Fade</a>
  29. <a href="#" class="easyui-linkbutton" onclick="progress()">Progress</a>
  30. </div>
  31. <script type="text/javascript">
  32. function show(){
  33. $.messager.show({
  34. title:'My Title',
  35. msg:'Message will be closed after 4 seconds.',
  36. showType:'show'
  37. });
  38. }
  39. function slide(){
  40. $.messager.show({
  41. title:'My Title',
  42. msg:'Message will be closed after 5 seconds.',
  43. timeout:5000,
  44. showType:'slide'
  45. });
  46. }
  47. function fade(){
  48. $.messager.show({
  49. title:'My Title',
  50. msg:'Message never be closed.',
  51. timeout:0,
  52. showType:'fade'
  53. });
  54. }
  55. function progress(){
  56. var win = $.messager.progress({
  57. title:'Please waiting',
  58. msg:'Loading data...'
  59. });
  60. setTimeout(function(){
  61. $.messager.progress('close');
  62. },5000)
  63. }
  64. </script>
  65. </body>
  66. </html>

插件效果

easyui源码翻译1.32--Messager(消息窗口)的更多相关文章

  1. easyui源码翻译1.32+API翻译全篇导航 (提供下载源码)

    前言 EasyUI每个组件都会有 属性.方法.事件 属性 所有的属性都定义在jQuery.fn.{plugin}.defaults里面.例如,对话框属性定义在jQuery.fn.dialog.defa ...

  2. easyui源码翻译1.32--Dialog(对话框窗口)

    前言 扩展自$.fn.window.defaults.使用$.fn.dialog.defaults重写默认值对象.下载该插件翻译源码 该对话框是一种特殊类型的窗口,它在顶部有一个工具栏,在底部有一个按 ...

  3. easyui源码翻译1.32--datagrid(数据表格)

    前言 此前网上有easyui1.25的源码  应该算是比较老的版本  之后又经历了1.26 . 1.3. 1.31. 1.32 .1.33.1.34  1.33开始支持css3 算是又一个转折  但是 ...

  4. easyui源码翻译1.32--EasyLoader(简单加载)

    前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3. ...

  5. easyui源码翻译1.32--SearchBox(搜索框)

    前言 使用$.fn.searchbox.defaults重写默认值对象.下载该插件翻译源码 搜索框提示用户需要输入搜索的值.它可以结合一个菜单,允许用户选择不同的搜索类别.在用户按下回车键或点击组件右 ...

  6. easyui源码翻译1.32--panel(面板)

    前言 昨天发布了表格datagrid的翻译源码 ,easyui的许多插件有依赖关系  比如datagrid 的渲染需要panel.resizable.linkbutton.pagination   今 ...

  7. easyui源码翻译1.32--ValidateBox(验证框)

    前言 使用$.fn.validatebox.defaults重写默认值对象.下载该插件翻译源码 validatebox(验证框)的设计目的是为了验证输入的表单字段是否有效.如果用户输入了无效的值,它将 ...

  8. easyui源码翻译1.32--ComboGrid(数据表格下拉框)

    前言 扩展自$.fn.combo.defaults和$.fn.datagrid.defaults.使用$.fn.combogrid.defaults重写默认值对象.下载该插件翻译源码 数据表格下拉框结 ...

  9. easyui源码翻译1.32--Draggable(拖动)

    前言 使用$.fn.draggable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:qq 1364386878 --拖动 ...

随机推荐

  1. .net在Controller里的方法添加[HttpGet]和[HttpPost]

    前端用post过来,Controller就要用[HttpPost],前端用get,Controller就要用[HttpGet],或者不管前端用什么,Controller都不加这些. 前端用post $ ...

  2. linux下设置mysql数据库字符集utf8

    mysql中文乱码解决方法:将mysql数据库编码统一utf8 查看数据库编码: show variables like 'character%'; 编辑/etc/my.cnf [mysql] def ...

  3. 常用经典SQL语句大全(基础)

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sqlserver --- 创 ...

  4. FFMPEG高级编程第一篇:环境搭建及编译

    前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家 ...

  5. 用dubbo+zookeeper+spring搭建一个简单的http接口程序

    dubbo是一个分布式服务框架,是阿里巴巴开发的一个解决RPC远程调用优化的核心框架,包含负载均衡算法,能提高分布式系统的性能. zookeeper是hadoop的一个子项目,主要用来解决分布式系统的 ...

  6. 第七篇、hitTest UITabbar中间突出按钮额外增加可点击区域

    简介: 以前UITabbar使用中间有一个凸起按钮时,常常就需要用到hitTest来处理可点击的范围. 示例代码: - (UIView *)hitTest:(CGPoint)point withEve ...

  7. Java快速教程

    作者:Vamei     出处:http://www.cnblogs.com/vamei Java是面向对象语言.这门语言其实相当年轻,于1995年才出现,由Sun公司出品.James Gosling ...

  8. 《APUE》第四章笔记(2)

    下面介绍对stat结构的各个成员的操作函数. 先贴个stat结构的图: access函数: #include <unistd.h> int access(const char *pathn ...

  9. JSON Date Format/JSON 日期格式方法分享

    我是很懒的,不想多说,所以直接上代码.亲们懂的. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://w ...

  10. .net面试题( 转)

    描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响 ...