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


Автор: Shadow_1512 3.2.2005, 12:31
Значится есть страничка, по ссылке открывается попап, в котором есть некая форма. Форма заполняется и по нажатию кнопки ее данные перекачиваются в форму, которая есть в исходном окне в невидимом слое, после чего эту форму в невидимом слое надо сабмитить,ну а окно попап закрыть.
Представляю скрипт:
Код

function copySearchDataCloseWin()
{
 var frm   = window.document.forms.search;//Форма из попапа
 var frm_o = window.opener.document.forms.form1;//Форма исходного окна

 frm_o.action = frm.action;

 for(i=0; i<frm_o.elements.length; i++)//передача текстовых между формами
   {
     frm_o.elements[frm_o.elements[i].name].value =
     frm.elements[frm_o.elements[i].name].value;
   }

//Проверка чекбоксов

 if(frm.elements["ArchitectureMonument"].checked)
   frm_o.elements["ArchitectureMonument"].value = 1;
 else
   frm_o.elements["ArchitectureMonument"].value = 0;

 if(frm.elements["KapRemounte"].checked)
   frm_o.elements["KapRemounte"].value = 1;
 else
   frm_o.elements["KapRemounte"].value = 0;

 if(frm.elements["ClearInsideFinish"].checked)
   frm_o.elements["ClearInsideFinish"].value = 1;
 else
   frm_o.elements["ClearInsideFinish"].value = 0;

 if(frm.elements["Parking"].checked)
   frm_o.elements["Parking"].value = 1;
 else
   frm_o.elements["Parking"].value = 0;

 if(frm.elements["Cellar"].checked)
   frm_o.elements["Cellar"].value = 1;
 else
   frm_o.elements["Cellar"].value = 0;

 if(frm.elements["Penthouse"].checked)
   frm_o.elements["Penthouse"].value = 1;
 else
   frm_o.elements["Penthouse"].value = 0;

 if(frm.elements["IncompletedConstruction"].checked)
   frm_o.elements["IncompletedConstruction"].value = 1;
 else
   frm_o.elements["IncompletedConstruction"].value = 0;

//Собственно сабмит формы исходного окна
 frm_o.submit();

 window.close();
}


Но.........на строку frm_o.submit() пишет, что frm_o.submit is not a function в случае Мозиллы или
"объект не поддерживает данное свойство или метод" в случае IE6. При том, что если сделать alert(frm_o) он говорит, что это есть ObjectHTMLInputForm. И еще момент, есть похожий JS, но для другого случая, так вот там все аналогично, но работает.....

Я уже потерял веру в себя(smile)), помогите

Автор: Sardar 3.2.2005, 14:36
У меня точно такая же трабла была, тоже чуть в осадок не выпал. Причину не знаю, но иногда метод submit у формы становится элементом <input type="submit". Сам метод после этого не доступен. Если убрать <input name="submit", то всё должно работать...

Знаю что выглядит как бред сумасшедшего, меня до сих пор глючит по этому поводу smile
Дай код своей формы.

Автор: Shadow_1512 3.2.2005, 14:44
Код моей формы настолько велик, что я его сюда помещать не буду, помещу только начало формы и конец, собственно говоря. У меня, кстати, данные передаются не по input type="submit", а по onclick....
Код

<form action="search.phtml" method="GET" name="search">
<input type="hidden" name="object" value="true">
<input type="hidden" name="submit" value="true">
..................................................................................
<div style="text-align:right; padding-right:30px;">
 <a href="javascript:;" onclick="copySearchDataCloseWin();"><img src="/images/button_find.gif"   hspace=4 alt="найти" title="найти" border="0" id="button"></a>
<a href="javascript:;" onClick="forms[0].reset();"><img src="/images/button_reset.gif" hspace=4 alt="сбросить" title="сбросить"></a>
</div>
</form>


А вот код формы, в которую данные переливаются (тоже сокращенно):
Код

<div style="display:none;">
<form method="POST" name="form1" id="form1">
<input type="hidden" name="object" value="true">
<input type="hidden" name="submit" value="true">
</form>


Автор: Sardar 3.2.2005, 14:47
Убери
HTML
<input type="hidden" name="submit" value="true">

Дай более нормальное имя. Приходится мирится с глюками браузера.

Автор: Shadow_1512 3.2.2005, 14:51
Заработало!!!!:)

Спасибо!

Автор: Shadow_1512 4.2.2005, 13:47
Продолжение вчерашней истории:
Есть формочка:

Код

<form action="/dic.phtml?id=1" method="POST" name="owner">
<input type="hidden" name="id_OwnerRealEstate" value="">&nbsp;&nbsp;
<input name="OwnerRealEstateName" type="text" size="50" value="">
<a href="javascript:;" onclick="checkAndSubmitForm();">
<img src="/images/button_ok.gif" hspace=4 alt="ок" title="ок" id="button">
</a>
<a href="javascript:;" onclick="forms[0].reset();">
<img src="/images/button_reset.gif" hspace=4 alt="сбросить" title="сбросить" id="button">
</a>
</form>


Есть функция:

Код


function checkAndSubmitForm()
{
 frm = window.document.forms.owner;
 counter = 0;
 for(i = 0; i < frm.elements.length; i++)
   {
     if(frm.elements[i].value)
       counter++
   }
 if(counter)
   {
     frm.submit();
   }
 else
   {
     alert("Вы не ввели значение поля");
     return false;
   }
}



Итог: не работает submit в IE, в Мозилле работает.

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