• javascript 关闭窗口,弹出新窗口并带有确认关闭对话框解决办法


        在很多人眼里,北京是一个物欲横流的社会,生活节奏之快,让你一丝都不能停下来,走在路上伴随着人群急速往前涌,或许有些人都不知道要去哪、也不知道自己想要的是什么?在一个浮躁的社会里,多了一些浮躁的人,到处的寻找捷径,脚踏实地已经跑得无影无踪。
        公司里项目一个接一个的上线,上线后一个接一个的出现问题,或许是我们该反思的时候了,在时间、质量、成本三者需要平衡的时候,我们总是会在时间和成本上做考虑,上线之前的演示只是一个纸老虎,其实离使用的程度差的很远,我们总会一开始把客户的欲望调得很高,但是种种的问题终究会在上线之后暴露出来,让客户产生一种落差,要想再逆转这种结局需要付出百倍的努力,每个人都是消防队员,哪里需要救火就到哪里去,远看形势一片美好,近看火海一拨比一拨高。
        最近又调回公司做一个救火的项目,我主要负责在线报名部分,包括以下几个内容:
        1、专业人士门票的索取
        2、企业展会的报名
        3、后台包括专业人士和企业展会的查询、搜索和导出。
        功能上没有什么技术难点,但是必须在3天内上线,回来之后就开始了苦逼的生活,建表、建实体、写接口、数据库操作类、业务操作类,一切在掌控中进行。其中的企业展会包括参会企业信息和参会人员两部分,一个企业可能对应多个参会人员,经过考虑采用了以下布局模式:



         点击继续添加参会人员,弹出一个模式窗口,

         后台代码:

                GCMS.Model.EntAttendPerson entAttendPerModel = new Model.EntAttendPerson();
                GCMS.CMS.EntAttendInfo entAttend = new CMS.EntAttendInfo();
    
                entAttendPerModel.Name = this.txtName.Value;
    
                if (!string.IsNullOrEmpty(Request.Form["Sex"]))
                    entAttendPerModel.Sex = int.Parse(Request.Form["Sex"]);
    
                entAttendPerModel.Job = this.txtJob.Value;
                entAttendPerModel.Telphone = this.txtTelphone.Value;
                entAttendPerModel.Mobile = this.txtMobile.Value;
                entAttendPerModel.Email = this.txtEmail.Value;
    
                if (!string.IsNullOrEmpty(Request.Form["radAccomRequire"]))
                    entAttendPerModel.AccomRequire = int.Parse(Request.Form["radAccomRequire"]);
    
                if (!string.IsNullOrEmpty(Request.Form["txtAccomDateStart"]))
                    entAttendPerModel.AccomDateStart = DateTime.Parse(this.txtAccomDateStart.Value);
    
                if (!string.IsNullOrEmpty(Request.Form["txtAccomDateEnd"]))
                    entAttendPerModel.AccomDateEnd = DateTime.Parse(this.txtAccomDateEnd.Value);
                entAttendPerModel.EntAttendNum = this.hidGuid.Value;
    
    
                int count = 0;
                if (string.IsNullOrEmpty(Request.QueryString["id"]))
                    count = entAttend.AddEntAttendPer(entAttendPerModel);
                else
                {
                    entAttendPerModel.Id = int.Parse(Request.QueryString["id"]);
                    count = entAttend.UpdateEntAttendPer(entAttendPerModel);
                }
                this.Page.ClientScript.RegisterStartupScript(this.GetType(), String.Empty, "addEntAttendPerTip(" + count + ");", true);
    

         前台js:

        <head runat="server">
        <title>中国智慧城市大会_在线报名</title>
        <base target="_self" />
         <script type="text/javascript">
            window.onload = function a() {
                //取得传入参数
                var argu = window.dialogArguments;
                if (argu) {
                    if (argu.guid != "") {
                        document.getElementById("hidGuid").value = argu.guid;
                    }
                }
            }
            function addEntAttendPerTip(addCount) {
                if (addCount > 0) {
                    alert("操作成功!");
                    var result = new Object();
                    result.IsAdd = addCount;
                    window.returnValue = result;
                     window.close();
                }
                else {
                    alert("操作失败!");
                }
            }
       <script>
    

         添加完成以后,刷新下面的列表。并可对列表中的参会人员进行编辑和删除。
         在临近上线的时候,突然出现了一个问题,当在添加完参会人员关闭模式窗口的时候,”奇迹“出现了,在关闭的时候弹出了一个新的页面提示操作成功,并伴有是否关闭窗口的提示框,火狐中并不会出现问题,IE中会出现此问题,在胜利到来的时候,老天总会和你开一些玩笑,兵来将挡水来土掩,查找资料,原因就在于点击添加的时候,出现了一个新窗口而不是在原有的窗口上面完成添加操作,最后在在添加参会人员的模式窗体 head 中添加 <base target="_self" />,让页面自己去处理请求,问题迎刃而解。

  • 相关阅读:
    后台菜单权限设计实现思路
    Laravel创建模型到指定目录
    laravel框架加载静态资源注意事项
    mysql 快速生成测试数据小技巧
    Lavaral基础实践——文件上传报错
    PHP常量详解:define和const的区别
    开发常用的工具网站
    windows下用navicat远程链接虚拟机Linux下MySQL数据库(测试可行)
    java异常处理机制思路总结
    记录一些比较容易含糊的概念
  • 原文地址:https://www.cnblogs.com/lmhwolf/p/3203803.html
Copyright © 2020-2023  润新知