我有一个子窗口和一个带有隐藏字段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更新值。
迪
答案 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鼓卷!
在第1和第3点之间的某个地方你的开场白$(document).ready()
发生了......
缺少第3页(由于并行性),没有为hiddenField设置值。
您可能会在我的弹出窗口解决方案中看到我的解决方法,其中指出:
setTimeout(function() {
[...]
window.opener.document.forms[0].submit();
window.close();
}, 5);
答案 2 :(得分:-1)
window.opener.$('#hiddenvariable').val('somevalue');