在子窗口关闭后更新父窗口上的HiddenFiled值Javascript,VS2005 c#

问题描述:

我有一个子窗口和一个带有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

你想输入框的属性是value,不Value

+0

我认为这不是问题,因为我已经提到隐藏字段的值是正确设置的。但是当父页面加载完成后它会更新。 我想检索Parent page_load事件中的更新值 Dee – Dee 2010-01-30 05:55:07

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

首先:您应该选择#选择器,因为每个定义的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