Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Pop-up окно


Автор: Jilian 22.7.2008, 16:54
Добрый день,

не могу организовать трансфер информации из pop-up. 

Код

<html><head><title>Test</title>


<script LANGUAGE="JavaScript">
<!--
var newWind;

function Transfer(){
    alert("Transfer function1");
    
}
function createWindow() {
    newWind=window.open('', '', 'width=500,height=500,status=no,location=no,toolbar=no,menubar=no'); 
    var tmp = newWind.document;
    tmp.write('<html><head><title>Hello, i am pop-up</title></head>');
    tmp.write('<input type= "button" onClick = "Transfer()" value="Submit">');
    tmp.write('<input type=text  name=edit_box value=text>');
    tmp.write('<input type=radio name=rad1 value=Radio1> 1');
    tmp.write('<input type=radio name=rad2 value=Radio1> 2');
    tmp.write('<input type=radio name=rad3 value=Radio1> 3');    
    tmp.write('</html>');    
}


// -->
</SCRIPT>

</head>
<body>
<a href="http://google.com" onmouseover="createWindow()"
>google.com</a>

</body></html>


Итак, при наведении на линку вылазит pop-up окно, предполагается, что в нем есть эдит, в который можно что-то ввести, проблема в том, что я не могу забрать то, что ввел пользователь по окончанию ввода и нажатию кнопки Submit.

В данный момент я не могу добиться даже того, чтоб при нажатии на Submit вызывалась функция Transfer()

Подскажите пожалуйста, как это лучше организовать.

Заранее спасибо.

Автор: bars80080 22.7.2008, 17:44
во-первых, кнопка сабмит не для того предназначена. ею формы отсылают, если хотите подключить на неё js, то используйте button

во-вторых, код вы записываете в новое окно, а функция Трансфер сидит в родительском, обращайтесь к ней так:
Код

onClick = "opener.document.Transfer();" 

или без document


хотелось бы также заметить, что коли содержимое статическое, то его лучше уже иметь в открываемом окне, а не закидывать скриптом

Автор: Jilian 22.7.2008, 17:53
Спасибо громадное!

onClick = "opener.Transfer()" -так надо =)

Подскажите пожалуйста, как мне из эдита 

    tmp.write('<input type=text  name=edit_box value=text>');

получить содержимое.... одной мне не справится....

заранее спасибо!

Добавлено через 14 минут и 51 секунду
я пыталась так

    tmp.write('<input id = Text1 type=text  value=text>');

а затем, чтоб вывести содержимое эдита

    alert(opener.getElementById('Text1').value);

но не получается =)

Автор: bars80080 22.7.2008, 20:05
та же самая ошибка, но с другого бока

у вас два окна. одно родительское в котором всё начинается, второе новое, которое вы создаёте. когда вы обращаетесь к элементам документов этих окон, то нужно указать точный адрес.
понятное дело если вы в одном окне обращаетесь к элементу этого же окна. тогда пишете просто document.getElement...
а если к другому окну?

так как родительское окно вы никак не называете, то из нового окна существует адрес opener.document...
а как обратится из родительского к новому? (а ведь новых окон можно открыть много), так вы же вернули его идентификатор на имя newWind!

функция у вас в родительском окне, а инпутбоксы в новом
так и обращайтесь: 
Код
alert(newWind.document.getElementById('Text1').value);
 или без документа (никогда не помню где употребляется, а где нет)

Автор: Jilian 23.7.2008, 11:18
Большое спасибо, вроде разобралась =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)