在開發的時候,遇到了這樣一個問題,客戶填寫自己的收貨地址,可以新建,但同時也可以選擇之前填寫的,由於我們的客戶本身就是商戶,地址繁多,把它之前的地址簡單用個下拉框羅列出來顯然不合適,並且客戶要求能夠對地址通過姓名篩選,這樣,選擇地址就必須再開一個小窗來完成了,那麼,小窗中填寫的值怎麼回傳呢?
js有個方法showModalDialog在這種情況下用的就比較多了,其作用是打開一個模態窗口,什麼事模態窗口?就是打開後不能操作父窗口,只有子窗口操作完了,關閉了,才可以繼續父窗口的動作。回到最開始的問題的話,就是給一個地址選擇入口,點擊觸發事件btn_click()。
父窗口JS
function btn_click() { var returnValue = window.showModalDialog('chooseAddr.aspx', window, 'dialogWidth=500px;dialogHeight=600px;status=no'); if (vReturnValue !== "" && vReturnValue !== undefined) { //處理子窗口的返回值 } }
子窗口中,在用戶完成篩選選擇等一系列動作以後,確定時,觸發事件returnVal()。
function returnVal() { var rtArr = new Array(); rtArr[0] = "test0"; rtArr[1] = "test1"; window.returnValue = retArr; window.close();//關掉子窗口,才能繼續父窗口的操作 }
這樣,就完成了父子窗口的“數據互動”,對了,父窗口怎麼向子窗口傳值呢,在本例下,我們需要知道操作用戶的id才能給他選擇自己之前填寫過的地址,只需在
window.showModalDialog的第一個參數,即打開的子窗口地址中加上參數?id=xxx,沒錯get方式傳過去就OK了。
以上這篇JS獲取子窗口中返回的數據實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。