0

popuptest.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title></title>
</head>
<body>
<form action="#" id="formid" >
    <input type="text" id="textinput" value="empty value" />
    <input type="hidden" id="hiddeninput" value="empty value" />
    <button type="button" onclick="window.open('popup.xhtml', 'Select Reference','status,width=400,height=400');" >Open PopUp</button>
</form>
</body>
</html>

popup.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title></title>
</head>
<body>
<button onclick="
    opener.document.getElementById('textinput').value = 'text value from child pop up !';
    opener.document.getElementById('hiddeninput').value = 'hidden value from child pop up !';
    window.close();
">Put values to parent</button>
</body>
</html>

打开 popuptext.xhtml -> 按打开弹出按钮 -> 按将值放入父级 我在父窗口中观察到的内容:

似乎值已传递给父文本输入 似乎值已传递给父文本输入

但另一方面,我在 Chrome 调试 (F12) 中看到的内容:

我的天啊! 文本输入为空! 并且值被传递给隐藏的输入(如预期的那样)

我的天啊!文本输入为空!并且值被传递给隐藏的输入(如预期的那样)

Chrome 版本:29.0.1547.76 m 在 Firefox 24.0 上相同 对
这种行为有任何解释吗?它是一个错误吗?
我需要将值传递给文本输入,然后提交表单,但在这种情况下,表单不包含我的值。

4

1 回答 1

2

显示的值(property)和dom中的值(attribute)是两个不同的东西。

在 DOM 中设置的属性就像input元素的默认值。如果属性 中没有存储任何值,value则显示 DOM 属性之一。如果一个值存储在属性 value中,则显示该值而不是存储在属性中的值,但正如您所观察到的,dom 属性保持不变。

如果您存储null在属性中,value则会再次显示默认值。

所以你观察到的行为是正确的。

Here an answer to another question显示了属性属性之间差异的一种影响

于 2013-09-21T16:08:24.387 回答