300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 向模态窗体传递参数和获取返回值

向模态窗体传递参数和获取返回值

时间:2023-07-31 16:04:03

相关推荐

向模态窗体传递参数和获取返回值

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>

这样可以防止在模态窗体中点击按钮提交时打开新窗体的问题。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。