内嵌url 的 overlay 支持form 的ajax 提交,随意将普通网页变成overlay效果

如果你有一个 form page 比如 form.jsp 通过 initHandler forward , 在不改或者很少改代码的前提下 如何变成 overlay 效果呢?

具体效果请 访问 [url]http://flowplayer.org/tools/demos/overlay/external.html[/url]

实现过程 以简单demo 聚例

demo.jsp


<html>
<head>

<link rel="stylesheet" media="all" type="text/css" href="<c:url value="/resource/css/jquery/ui/overlay-minimal.css"/>" />

<script type="text/javascript" src="<c:url value="/resource/js/jquery/core/jquery-1.4.2.js"/>"></script>
<script src="<c:url value='/resource/js/jquery/customer/jquery.overlay.js'/>"></script>
<script type="text/javascript" src="<c:url value='/resource/js/jquery/customer/jquery.myOverlay.js'/>"></script>
<script type="text/javascript" src="<c:url value="/resource/js/jquery/customer/jquery.form.js"/>"></script>


<script type="text/javascript">

$(function(){
window.personalDoFunc=function(el){
$().myOverlay(el,function(record){
document.getElementById("mytest").innerHTML="返回的结果:name:"+record.name;
});
};
});

</script>

</head>
<body>
<a href="/personEdu/84" onclick="personalDoFunc(this)" >[Add]</a>
<a href="/personEdu/edit_form/157" onclick="personalDoFunc(this)">[Edit]</a>
<div id="mytest">返回的结果:</div>
</body>
</html>


其中 如果需要引用 overlay 需导入 两个 ovelay js 一个css 和jquery core 并且 如果需要form ajax submit 同时要引入 form.js

<link rel="stylesheet" media="all" type="text/css" href="<c:url value="/resource/css/jquery/ui/overlay-minimal.css"/>" />

<script type="text/javascript" src="<c:url value="/resource/js/jquery/core/jquery-1.4.2.js"/>"></script>
<script src="<c:url value='/resource/js/jquery/customer/jquery.overlay.js'/>"></script>
<script type="text/javascript" src="<c:url value='/resource/js/jquery/customer/jquery.myOverlay.js'/>"></script>
<script type="text/javascript" src="<c:url value="/resource/js/jquery/customer/jquery.form.js"/>"></script>



如果 你点击一个连接 本来应该是连接到 另一个 页面如
<a href="/personEdu/84"  onclick="personalDoFunc(this)" >[Add]</a>

只要 加上自己定义函数 personalDoFunc(名字任意) 并且实现如下

<script type="text/javascript">

$(function(){
window.personalDoFunc=function(el){
$().myOverlay(el,function(record){
document.getElementById("mytest").innerHTML="返回的结果:name:"+record.name;
});
};
});

</script>


在自定义函数中 显示调用 $().myOverlay(el,callback)方法 其中 el为当前 <a>对象 第二个参数为回调函数 参数record 就是后台返回的对象数据

如例子中我的url 指向personEdu/84 则后台接受如下

@RequestMapping(value = "/{id}",method = RequestMethod.GET)
public String init(@PathVariable("id") Integer personId,Model model) {
PersonEdu personEdu=new PersonEdu();
personEdu.setPersonId(personId);
model.addAttribute("personEdu", personEdu);
return "edu/personEdu";
}

在不加 overlay情况下会跳转到一个 personEdu.jsp的页面 如果加上 就可把 当前页面 内嵌在overlay 的div中

personedu.jsp 中的片段代码

<input type="submit" name="save2" value="保存form Submit" onclick="doSubmit(this)"/>
<a overlay="{url:'/personEdu/overlay2'}"><input type="button" value="普通Ajax" name="overlayUrl"/></a>

两种方法列举了 form submit 和普通的 ajax 如果 普通的ajax 需要自定义 overlay属性 以json格式
后台接受

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public JsonData savePersonEdu(PersonEdu personEdu, Model model,HttpServletRequest request,HttpServletResponse response) throws JSONException {
Integer i=personEdu.getId();
if(i!=null&&i>0){
// this.personEduService.updatePersonEdu(personEdu);
}else{
// i=this.personEduService.addPersonEdu(personEdu);
}
return new JsonData(personEdu);
}


由于时间有限 不明细处望见谅啊 附件中有 overlay 源码 以及 效果图片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值