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 м То же самое на Firefox 24.0
Есть ли какие-либо объяснения такого поведения? Это ошибка?
Мне нужно передать значение в текстовый ввод, а затем отправить форму, но в этом случае форма не содержит мое значение.
Отображаемое значение (свойство) и значение в dom (атрибут) - это две разные вещи.
Этот атрибут, установленный в DOM, подобен значению по умолчанию элемента input
. Если значение свойства не сохраняется в value
свойства, отображается один из атрибутов DOM. Если значение хранится в value
свойства, то оно отображается вместо значения, сохраненного в атрибуте, но, как вы заметили, атрибут dom остается нетронутым.
Если вы храните null
в value
свойства, value
умолчанию отображается снова.
Таким образом, ваше наблюдаемое поведение является правильным.
Здесь ответ на другой вопрос, который показывает один эффект разницы между свойством и атрибутом