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

时间:2010-01-29 08:34:54

标签: asp.net javascript

我有一个子窗口和一个带有隐藏字段hdnSelectedFields的父窗口。我正在更改hdnSelectedFields的值。

代码:

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更新值。

3 个答案:

答案 0 :(得分:0)

您想要的输入框的属性是value,而不是Value

答案 1 :(得分:0)

首先:你应该选择# - 选择器,因为每个定义的ID必须是唯一的!

弹出窗口中的

$(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);
});
在你的揭幕战中

$(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);

那么,打开弹出窗口会发生什么? ... biiig鼓卷!

  • 提交表格
  • 等待15ms
  • 设置hiddenField

在第1和第3点之间的某个地方你的开场白$(document).ready()发生了......
缺少第3页(由于并行性),没有为hiddenField设置值。 您可能会在我的弹出窗口解决方案中看到我的解决方法,其中指出:

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

答案 2 :(得分:-1)

window.opener.$('#hiddenvariable').val('somevalue');