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 - &gt;按开启弹出按钮 - &gt;按将值放到父级 我在父窗口中观察到的内容:
似乎该值已传递给父文本输入
但另一方面,我在Chrome调试中看到的内容(F12):
OMG!文字输入为空!和值传递给隐藏输入(如预期的那样)
Chrome版本:29.0.1547.76 m Firefox 24.0上也一样 这种行为有什么解释吗?这是一个错误吗? 我需要将值传递给文本输入,然后提交表单,但在这种情况下,表单不包含我的值。
答案 0 :(得分:2)
显示的值(属性)和dom(属性)中的值是两回事。
DOM中设置的属性类似于input
元素的默认值。如果属性 value
中没有存储任何值,则会显示其中一个DOM属性。
如果值存储在属性 value
中,则会显示此值而不是存储在属性中的值,但正如您观察到的那样,dom属性保持不变。
如果您将null
存储在属性value
中,则会再次显示默认值。
所以你观察到的行为是正确的。
Here对另一个问题的回答,该问题显示属性和属性之间差异的一个影响