向模态窗体传递参数和获取返回值
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>
這樣可以防止在模態窗體中點擊按鈕提交時打開新窗體的問題。
轉載于:https://www.cnblogs.com/fhuafeng/archive/2010/07/02/1769841.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的向模态窗体传递参数和获取返回值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 监视磁盘使用情况
- 下一篇: 北漂心中的梦:惬意的生活