在dwz中想要实现增加功能,如增加个用户,是通过弹出个新的tab页, 且添加成功后并不能直接返回主列表,并刷新。这样,在很多情况是不符合操作习惯的,而且也是比较麻烦的。这样我们就需要进行下小小的扩展,利用dialog弹出增加或修改页,保存后能关闭增加页且主页面自动刷新出新增加的记录。如下图所示:
一个简单的客户信息管理页,红色标记为该功能涉及的链接。
扩展代码common/extend/dialog.js:
$(document).ready(function(){ // dialogs $("a[target=dialog]").each( function(){ $(this).click(function(event) { var $this = $(this); var title = $this.attr("title") || $this.text(); var rel = $this.attr("rel") || "_blank"; var options = {}; var w = $this.attr("width"); var h = $this.attr("height"); if (w) options.width = w; if (h) options.height = h; options.max = eval($this.attr("max") || "false"); options.mask = eval($this.attr("mask") || "false"); options.maxable = eval($this.attr("maxable") || "true"); options.minable = eval($this.attr("minable") || "true"); options.fresh = eval($this.attr("fresh") || "true"); options.resizable = eval($this.attr("resizable") || "true"); options.drawable = eval($this.attr("drawable")|| "true"); //options.close = eval($this.attr("close") || ""); options.close = freshPage; options.param = $this.attr("param") || ""; var url = $this.attr("href"); var $p$ = window.parent.$; $p$.pdialog.open(url, rel, title, options); return false; }); }); // 关闭dialog,同时刷新页面 $(".submitForm").each( function() { $(this).click( function(event) { var $this = $(this); // 从按钮属性上获取对话框ID var dialogId = $this.attr("rel"); //取得处理函数 var onHand = eval($this.attr("onHand") || ""); var ret = false; if(onHand && $.isFunction(onHand)) { ret = onHand(); } if(!ret) return ; // 获取父窗体的jquery方法。 var $p$ = window.parent.$; var dialog = $p$("body").data(dialogId); var fresh = eval($this.attr("fresh") || "false"); if(fresh)//刷新父页面 dialog.data("param", {"retureType":"fresh"}); // 关闭对话框 $p$.pdialog.close(dialogId); return false; }); }); //关闭dialog $(".close").each( function() { $(this).click( function(event) { var $this = $(this); // 从按钮属性上获取对话框ID var dialogId = $this.attr("rel"); // 获取父窗体的jquery方法。 var $p$ = window.parent.$; // 关闭对话框 $p$.pdialog.close(dialogId); return false; }); }); }) //刷新页面 function freshPage(param) { if(param && param.retureType == "fresh") window.location.reload(); return true; }
只需要将上面的代码同时引入到主页面(客户列表页list.jsp)和添加(add.jsp)页面,同时在操作按钮上加相应的属性即可。下面介绍如何使用:
主页面"添加"设置
如下:
<a class="add" href="../content/add.html" target="dialog" mask="true" rel="customer _add" ><span>添加</span></a>
添加页面设置如下:
<li> <button type="button" class="submitForm" fresh="true" onHand="add" rel="zuo_add">保存</button> </li> <li> <button type="button" class="close" rel="zuo_add">取消</button> </li>对于“取消”按钮通过"close"标记,简单完成关闭添加页功能。"保存"(以及修改、删除按钮等,)按钮通过"submitForm" 标记,onHand属性标记完成添加功能的处理方法,方法名称可任意定义,如add、edit等,该方法必须返回个布尔值,为true时,将关闭添加页,为false时不关闭。fresh属性标记在onHand方法处理完后是否刷新主页面,true:刷新,false:不刷新。
下面代码是大家实际使用时需要扩展的:
//修改 function edit(){ //业务处理逻辑 //...... // return true; } //删除 function del(){ //业务处理逻辑 //...... // return true; } //添加 function add(){ //业务处理逻辑 //...... // return true; }方法名称可任意,但必须和onHand属性中的一致。
个人觉得此功能虽然简单,但很实用,所以分享下。