showModalDialog()向子窗口傳自定義參數(javascript提取url參數)及其餘

事情是這樣子的。
javascript

今天下午我正刷果殼刷得不亦樂乎,忽然需求就下來了。html

它!就!這!麼!下!來!了!java

客戶說,咱們須要打開一個新窗口來進行模糊查詢,而後選擇一個查詢結果回填到父窗口中。jsp

valy easy。ui

而後我發現那個模糊查詢的頁面叫agentSearch.jspurl

裏面的內容是這樣的spa

function backfill(){
    var val = document.getElementById("agentsearch").value;
    var parWin = window.dialogArguments;
    parWin.document.getElementById(" ").value = val;			
    window.close();
}

咦爲何getElementById參數會是空的呢代理

無論了多是上一我的沒寫完吧,那就讓我來完成它!!!code

有兩個頁面調用過它orm

createsettlementmanage_search.jsp

commissionsettlement.jsp

可能這兩個頁面須要的查詢條件都差很少吧,反正都調了同一個頁面不是麼

你也是這麼想的對吧?

呵呵。

我打開其中一個文件

吶就當我先打開的它吧

createsettlementmanage_search.jsp

...
function showAgentSearch(){
    var url = "<%=path%>/commission/agentSearch.jsp";
    var param = "dialogWidth:400px;dialogHeight:250px;help:no;unadorned:no;resizable:no;status:no";
    return window.showModalDialog(url,window,param);
}
...

...
<td class="pageCenter">代理人/經紀人:</td>
<td class="pageCenter">
    <input id="agentcode" name="agentcode" type="text" size="18">
    <input type="button" value=">" onclick="showAgentSearch()">
    <span style="color:#FF0000">*</span>
</td>
...

哎呦寫得不錯哦

吶既然id是agentcode那我在agentSearch.jsp裏面填上agentcode不就行了麼

果然是上一我的沒寫完啊嘖嘖嘖,到底是有多着急的事情啊連這個id都不願加上

而後我淡定地把id給寫了上去

parWin.document.getElementById("agentcode").value = val;

結果成功跑出來了。

對啊你覺得呢?

好了而後我打開了另外一個文件

commissionsettlement.jsp

...
function showAgentSearch(){
    var url = "<%=path%>/commission/agentSearch.jsp";
    var param = "dialogWidth:400px;dialogHeight:250px;help:no;unadorned:no;resizable:no;status:no";
    return window.showModalDialog(url,window,param);
}
...

...
<td class="pageCenter">代理人/經紀人:</td>
<td class="pageCenter">
    <input id="agentname" name="agentname" type="text" size="18">
    <input type="button" value=">" onclick="showAgentSearch()">
    <span style="color:#FF0000">*</span>
</td>
...

哎呀同樣的嘛,等我把東西交上去就...

等等

id爲何變成了agentname

臥槽。

怎麼能夠這樣,人與人之間最基本的信任呢

接下來就是咱們幾個熱烈討論解決方案的時候了

我主張的是把agentSearch.jsp拷貝一份,改個參數,讓一個文件調用這個agentSearch.jsp,另外一個文件調用另外一個agentSearch.jsp

簡單粗暴。是的我就是這麼不與世俗同流合污

龍哥說還有一種是用div直接在當前頁面顯示就好,正好省的煩開一個新頁面了

用w2ui或者easyui的話順路界面還能更漂亮呢不是

聽起來好有道理,不過代碼要大改

呵呵。

濤哥的意思是能夠在showModalDialog()的時候傳入一個參數parameter,當它是1的時候執行getElementById("agentcode"),當它是2的時候執行getElementById("agentname")

可是這個有一個重大問題就是,showModalDialog()只能傳入三個參數sURL,vArguments,sFeatures

我說咱們能夠把參數放在vArguments裏面啊多和諧啊水到渠成

龍哥說丫忘了咱們還要回填了吧vArguments只能傳父窗口的Object啊

哦。

而後濤哥說我以爲咱們能夠在url裏面放一個參數,就像這樣

agentSearch.jsp?parameter=1

我和龍哥同時對其機智表示讚許並表示黨國的將來仍是要靠大家

接下來就是實現了

那兩個名字好長的文件只不過在url後面打個問號加個參數就不從新寫了

是的我就是懶

如今只要改一下agentSearch.jsp就能夠交差了

生活如此美好

<%String parameter=request.getParameter("parameter");%>
...
function backfill(){
    var val = document.getElementById("agentsearch").value;
    var parWin = window.dialogArguments;
    var parameter = <%=parameter%>;
    if (parameter == "1"){
        parWin.document.getElementById("agentcode").value = val;
    }else if (parameter == "2"){
        parWin.document.getElementById("agentname").value = val;
    }else{
        alert("呵(f**k)呵(you)。");
    }
    window.close();
}
...

先在上面用request.getParameter("parameter")獲取到parameter的值

或者1或者2

固然了在不可抗力的做用下有可能產生一些奇怪的結果

好比說十一點斷電了

而後 var parameter = <%=parameter%>; 是將參數賦值到javascript腳本中

接下來就是執行判斷了

1的話這樣

parWin.document.getElementById("agentcode").value = val;

2的話這樣

parWin.document.getElementById("agentname").value = val;

其餘的話亂入請不要介意

那這樣的話任務就算完成了

在這裏我只想對那個寫這份代碼的前一個同窗說

You silly B!

hui duan!

shen me gui!

ni ma 【嗶-】!

son of bick!

There's a fire starting in my heart~ Reaching a fever piss and it's bringing me out the dark~

Done.


PS. 以上。是的我就是要把全部的變量名都叫 parameter 來砍死我啊呵呵呵。

相關文章
相關標籤/搜索