在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属性中的一致。个人觉得此功能虽然简单,但很实用,所以分享下。