2010-01-29 58 views
0

我有一個子窗口和一個帶有hiddenfield hdnSelectedFields的父窗口。我正在更改hdnSelectedFields的值。在子窗口關閉後更新父窗口上的HiddenFiled值Javascript,VS2005 c#

代碼:

String vStrScript = "<script language=javascript>function CloseParent() {window.opener.document.getElementById('hdnSelectedFields').Value = '" + tempstring + "'; alert(window.opener.document.getElementById('hdnSelectedFields').Value);window.close(); } window.opener.document.forms[0].submit(); setTimeout(CloseParent, 5);</script>"; 

當我關閉hdnSelectedFields值設置窗口,但是當我訪問父窗口的hdnSelectedFields頁面加載它顯示hdnSelectedFields的舊值。

如果您在JavaScriptit中看到警報,則會在父裝載完成時顯示更新的hdnSelectedFields值。

任何建議如何訪問父頁面載入的hdnSelectedFields更新值。

+0

不要雙擊後請。合併。 – 2010-02-18 12:58:32

回答

0

你想輸入框的屬性是value,不Value

+0

我認爲這不是問題,因爲我已經提到隱藏字段的值是正確設置的。但是當父頁面加載完成後它會更新。 我想檢索Parent page_load事件中的更新值 Dee – Dee 2010-01-30 05:55:07

-1
window.opener.$('#hiddenvariable').val('somevalue'); 
+0

- 脫離上下文 – 2010-02-18 07:52:58

+0

它是如何脫離上下文的。這個答案有什麼不對嗎? – Vicky 2010-02-19 05:35:47

+0

重新閱讀這個問題!你的答案不符合任何要求... :( – 2010-02-25 09:09:01

0

首先:您應該選擇#選擇器,因爲每個定義的ID必須是唯一的!

$(document).ready(function() { 
    var hiddenField = $('#hdnSelectedFields'); 
    var hiddenFieldValue = hiddenField.val(); 
    alert(hiddenFieldValue); // for debug reason 
}); 

編輯:
你的致命錯誤是以下幾點:

function CloseParent() { 
    window.opener.document.getElementById('hdnSelectedFields').Value = '" + hdnCheckedAttribute.Value + "'; 
    window.close(); 
} 
window.opener.document.forms[0].submit(); 
setTimeout(CloseParent, 15); 

所以,會發生什麼

$(document).ready(function() { 
    setTimeout(function() { 
     var hiddenField = $('#hdnSelectedFields', window.opener); 
     // you could do some checking here, eg. hiddenField.length for ensuring existance 
     hiddenField.val('new value'); 
     alert(hiddenField.val()); // for debug reason 
     window.opener.document.forms[0].submit(); 
     window.close(); 
    }, 5); 
}); 
在揭幕戰

在彈出

當你打開彈出窗口? ... biiig鼓卷!

  • 提交表單
  • 等待15ms的
  • 設置hiddenField

某處PT 1和3你對你的首戰$(document).ready()發生......之間
失蹤3篇(因並行性),沒有值設置爲hiddenField。 你可能會看到我的解決辦法在我的解決方案爲您的彈出窗口,其中指出:

setTimeout(function() { 
    [...] 
    window.opener.document.forms[0].submit(); 
    window.close(); 
}, 5); 
+0

我認爲你誤解了我的問題。我已成功設置隱藏的字段值從孩子。問題是在訪問父母時。 如果您在我的腳本中看到警報消息這會返回我更新的值。但父母后面的腳本不顯示更新 – Dee 2010-02-18 07:45:33

+0

啊......你可能還沒有更新......我已經在前一段時間添加了正確的代碼/評論! – 2010-02-18 07:46:41

+0

我已經把彈出的代碼在asp網頁 像這樣 按鈕提交 字符串vStrScript =「「; ClientScript.RegisterStartupScript(this.GetType(),「close」,vStrScript); 和opener代碼,如你所建議的仍然我沒有得到更新的價值。 – Dee 2010-02-18 08:37:12