zoukankan      html  css  js  c++  java
  • 向模态窗体传递参数和获取返回值

    1.向window.showModalDialog 传递参数:
      window.showModalDialog 方法的第二个参数就代表父窗体传递到模态窗体的参数值,可以为任何对象或数组),也可以不传递参数,直接为null就行。此参数是可选的。原型如下:
          vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
    例子:
       var params = [document.getElementById("tbCorpName"),document.getElementById("tbCorpId")]; //参数
       var returnValue = window.showModalDialog("selectclient.aspx",params ,"dialogLeft:1px;dialogTop:1px;dialogWidth:500px;dialogHeight:430px;resizable:yes;status:no");
    这样我们就可以在模态窗体中用 window.dialogArguments 属性获取传递进来的参数。
     function setCorpName(corpname,corpid)
        {
             var params = window.dialogArguments ;   //获取父窗体传递进来的参数;
             params[0].value = corpname;   //设置父窗体中文本域字段的值。
             params[1].value = corpid;
             self.close();  //关闭模态窗体。
        }
    这种方式在Firefox 下有个问题。如果模态窗体是动态页面(aspx页面),如果在模态窗体中涉及到与服务器端交互的话,如“查询”事件,则当点击“查询”按钮后,firefox 中就再也不能通过 window.dialogArguments 属性获取到传递进来的参数。也就是说在Firefox 中只是第一次弹出窗体时,能够获取到父窗体传递的参数,其他任何与服务器交互后,都将导致参数信息丢弃。IE中不存在这个问题。所以如果你想在模态窗体中访问父窗体中的对象,最好不要采用这种方式。看下面第二种方式:

    2.从模态窗体获取返回值:
       window.showModalDialog 方法的返回值就是模态窗体的的返回值。通过在模态窗体中用 window.returnValue 属性设置。
    //父窗体代码:
       var returnValue = window.showModalDialog("selectclient.aspx",null,"dialogLeft:1px;dialogTop:1px;dialogWidth:500px;dialogHeight:430px;resizable:yes;status:no");
     if(returnValue)
     {
           var arrValue = returnValue.split(":");  //以冒号分隔值
           document.getElementById("tbCorpName").value = arrValue[0];
           document.getElementById("tbCorpId").value = arrValue[1];
     }
    //模态窗体代码:
    function setCorpName(corpname,corpid)
        {
             window.returnValue = corpname + ":" + corpid;    //设置从模态窗体返回的值
             self.close();
        }
    另外注意在模态窗体的<head> 区加上:
    <base target="_self"></base>
    这样可以防止在模态窗体中点击按钮提交时打开新窗体的问题。

  • 相关阅读:
    [转载]Linux用户管理全攻略(三)
    [转载]Linux用户管理全攻略(二)
    [转载]Linux用户管理全攻略(二)
    [转载]如何将数据库所有表里面的varchar字段批量改成N
    [转载]第八章  grep 家族
    [转载]第八章  grep 家族
    [转载]如何将数据库所有表里面的varchar字段批量改成N
    [转载]informix学习分享
    [转载]Linux用户管理全攻略(一)
    [转载]Linux用户管理全攻略(一)
  • 原文地址:https://www.cnblogs.com/weekend001/p/1552911.html
Copyright © 2011-2022 走看看