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


Автор: Apostolakis 13.4.2003, 19:45
Мне необходимо, чтобы форма нажатием "Submit" открывала окно определенного размера без адресной троки и т.д.

Буду рад помощи

Автор: Foxx 14.4.2003, 13:43
а в чем проблема? принажатии на кнопку запсускаешь скрипт, который открывает новое окно. Передаешь необходимые параметры.
window.open("new.html", "new", [параметры])

Автор: Apostolakis 14.4.2003, 17:09
Щас попробую!
Фянкс!

Автор: Apostolakis 14.4.2003, 17:22
Окно открывается автоматом. а мне необходимо, чтоб только после нажатия "Сабмит".

Сорри, я совсем не знаком с Java Script.

Цитата
<form action="new.html">
<script language="JavaScript1.2">
window.open("new.html", "new", [height=660,width=470])

</script>
<input type=submit value="go" id="new">
</form>


Фянкс заранее

Автор: [xoodo] 14.4.2003, 22:48
Код

<script language="JavaScript1.2">
function openMe(){
window.open("new.html", "new", "height=660,width=470");
}
</script>
<form action="openMe()"> <!-- или <form action="javascript:openMe()"> ? -->
<input type=submit value="go" id="new">
</form>


Или еще вариант:

Код

<script language="JavaScript1.2">
function openMe(){
window.open("new.html", "new", "height=660,width=470");
}
</script>
<form>
<input type=submit value="go" id="new" onClick="openMe()">
</form>

Автор: Apostolakis 14.4.2003, 22:59
xoodo!

Большое спасибо! Естественно - функция работает smile.gif

Как сделаю задуманное - напишу тут об успехе!

Автор: Foxx 15.4.2003, 05:19
офтоп: ну вот, опередили smile.gif
Цитата
<input type=submit value="go" id="new" onClick="openMe()">

а зачем ИД кнопке ?

Автор: Apostolakis 15.4.2003, 07:59
So, проблема снова...

Почему-то не отсылаются данные из формы. Сабмит только открывает нужное мне окно, но данные не обрабатываются. Т.е., например:


Цитата
<script language="JavaScript1.2">
function openMe(){
window.open("new.html", "new", "height=660,width=470");
}
</script>
<form action="javascript:openMe()">
<select name="month">
<option value="1">январь</option>
<option value="2">февраль</option>
<option value="3">март</option>
<option value="4">апрель</option>
<option value="5">май</option>
<option value="6">июнь</option>
<option value="7">июль</option>
<option value="8">август</option>
<option value="9">сентябрь</option>
<option value="10">октябрь</option>
<option value="11">ноябрь</option>
<option value="12">декабрь</option>
</select>
<input type="text" name="year" size="6" maxlength="4" value="2003">
<input type=submit value="go" id="new">
</form>


В чём проблема?

Автор: Foxx 15.4.2003, 11:27
гы smile.gif
а так и не получиться... тебе нужно проверять в каком положении находиться переключатель. такой способ годиться только для отправки данных на сервер.

Автор: Apostolakis 15.4.2003, 15:17
Э, друзья! А что мне делать тоconfused.gif

Мне не хочется делать открывающийся обычный броузер.
Жду ответа!

Автор: Foxx 15.4.2003, 15:25
учись сам smile.gif

Автор: Guest_Apostolakis 15.4.2003, 15:38
Нуу, есть чему учиться. а вот что не успеваю спрашиваю. Так что подобные советы мне ни к чему...

Автор: Foxx 15.4.2003, 15:47
ну если дома получиться сделать то скажу как.... а так могу только подбросить идеи. надо?

Автор: Apostolakis 15.4.2003, 19:44
Foxx - буду рад smile.gif

Автор: Foxx 16.4.2003, 04:19
что-то типа этого:
1. открываешь новое окно
2. с помощью DHTML обращаешься к свойствам предыдущего окна
3. смотришь что было выбрано
4. а дальше делаешь что тебе нужно smile.gif

вроде должно проканать

Автор: IZ@TOP 16.4.2003, 16:18
Цитата
что-то типа этого:
1. открываешь новое окно
2. с помощью DHTML обращаешься к свойствам предыдущего окна
3. смотришь что было выбрано
4. а дальше делаешь что тебе нужно

вроде должно проканать


Что - то вроде:
Код


<script language=javascript>
function openwin() {
var data = "data";
data = document.form1.text1.value;
window.open("index.htm?data="+data);
}
</script>

<form name="form1" action=index.htm method=get>
<input type='text' name="text1">
<input type=button value="  go   " onClick="javascript:openwin();">


Может что то в этом роде ?

Автор: Apostolakis 17.4.2003, 08:05
Iz@top. Спасибо. Будет время - проверю на себе smile.gif

Автор: Foxx 17.4.2003, 12:07
Цитата
Может что то в этом роде ?

может быть smile.gif
я этот код еще в глаза не видел....

Автор: IZ@TOP 17.4.2003, 12:23
Цитата
я этот код еще в глаза не видел....

Ну я так подумал что можно это все через url передать ... так вот оно самое и получается !

Автор: Ivushka 29.12.2005, 12:44
Народ а если нельзя через url??? что тогда????
Знаю тема старая но очень нужно...
помогите плииииииииииизззззззззззззззз smile

Автор: Sardar 29.12.2005, 16:17
Ivushka ты уже создала подобную тему, никто не понял что тебе конкретно нужно и почему ты не хочешь составить форму, заполнить её hidden полями и отослать методом POST на сервер, при этом никаких ограничений на размер нет. Попробуй в новом топе просто и ясно описать проблему + обязательно скинуть часть вёрстки, я помню ты таблицу отослать хотела, так вод форма и пара строк таблицы интересуют. Научишся ясно ставить вопрос, сразу получишь ответ с кодом smile

Автор: Ivushka 29.12.2005, 16:22
Sardar
в прошлой теме у меня не получалось отослать таллицу на этой же странице после обновления,
а теперь мне надо при нажатии на кнопку открыть новое окно и submit'ом передать данные туда.

я разобралась с POSTом там моя ошибка была smile

а эта тема как раз то что мне надо сейчас!!!

Надо передать POST'ом данные на новое
Код

window.open

Автор: Sardar 29.12.2005, 16:33
Цитата(Ivushka @ 29.12.2005, 15:22)
Надо передать POST'ом данные на новое

Пойми отослать инфу можно только на сервер, а ответ загрузить в любом из открытых окон. Если тебе это нужно, то просто задай target="имя окна", имя окна ты задаёшь вторым параметром window.open

Для передачи инфы из родительского окна в дочернее (повторяю не отсылка на сервер и получение результата в окно, а буквально передать слово "инфа" в другое окно), то тебе требуеться ссылка на окно, что ты получила вызовом window.open, по ссылке уже вызываешь JS функции в окне и меняешь переменные.

Ivushka ты всё ещё не можешь задать ясный вопрос, а ведь это половина успеха smile

Автор: Ivushka 29.12.2005, 16:56
Sardar Спасибо что няньчишся))
Просто сложно задавать вопрос когда не знаеш ни JS ни PHP ....
По идее надо делать
Код

<form method='post' target<!-- вместо action-->='print.php?val=1&pr=2&day1=".$day1."&month1=".$month1."&year1=".$year1."&day2=".$day2."&month2=".$month2."&year2=".$year2."' name='form1'  >
...
<input type="submit" value="Печать списка" name="B2" OnClick="Open_w();">

а в JS
Код

function Open_w(){
m.value = spisok.rows.length-2; 
form1.submit; 
window.open('', 'print.php?val=1&pr=2&day1=".$day1."&month1=".$month1."&year1=".$year1."&day2=".$day2."&month2=".$month2."&year2=".$year2."');

код не проверяла так на вскидку...
правильно я заблуждаюсь?
smile

Автор: Sardar 29.12.2005, 22:41
Цитата(Ivushka @ 29.12.2005, 15:56)
правильно я заблуждаюсь?

угу, всё совершенно не правильно smile

target задаёт имя окна, не путь, не параметры, не аттрибуты (хотя имя всё таки аттрибут...), а уникальное по сути свойство - имя. Браузер при отправке формы поищет открытое тобой ранее окно с заданным именем, если не найдёт, то сам откроет такое.

Далее смотрим на длинний ряд параметров, что ты пытаешся отослать GET'ом, хотя форма отсылаеться POST'ом. Звучит дико, но не каждый браузер позволит такой action, некоторые (старая мозилла этим страдала по моему) могут отрезать все параметры, т.к. параметры передаються в hidden полях. Следовательно твоя форма будет выглядеть так:

Код
<form method="POST" action="print.php" target="mywindow">
    <input type="hidden" name="val" value="1">
    <input type="hidden" name="pr" value="2">
    <input type="hidden" name="day1" value="{$day1}">
    <input type="hidden" name="month1" value="{$month1}">
    <input type="hidden" name="year1" value="{$year1}">
    <input type="hidden" name="day2" value="{$day2}">
    <input type="hidden" name="month2" value="{$month2}">
    <input type="hidden" name="year2" value="{$year2}">
    
    <input type="submit" value="Печать списка">
</form>

Пришедшие данные читаем из $_POST или из $_REQUEST, никакого JS кода тебе не нужно.

Автор: Ivushka 30.12.2005, 09:57
Sardar
нет все не так(((

я открываю окно print.php параметры нужны для выбора действи на print.php.
а данные я передаю другие!!!! таблицу тобиш

а если так?
Код

window.open('print.php?val=1&pr=2&day1=".$day1."&month1=".$month1."&year1=".$year1."&day2=".$day2."&month2=".$month2."&year2=".$year2."', 'print.php');



вот код формы целиком
Код

$sql_red = $sql_o." Trips_Place.Out < '". $qwe ."' and";
           if(($day1)and($month1)and($year1)) 
             if (($day2)and($month2)and($year2))
               {$sql_red = $sql_red . " ((Trips_Place.In<='".$data_q1."' AND Trips_Place.Out > '".$data_q2."') or Trips_Place.In ='".$data_q1."' or Trips_Place.Out ='".$data_q1."' or Trips_Place.In ='".$data_q2."' or Trips_Place.Out ='".$data_q2."')";
                print "<form method='post' action='msk.php?val=1&pr=2&day1=".$day1."&month1=".$month1."&year1=".$year1."&day2=".$day2."&month2=".$month2."&year2=".$year2."' name='form1'>";
               }
              else  
              {$sql_red = $sql_red . " ((Trips_Place.In<='".$data_q1."' AND Trips_Place.Out > '".$data_q1."') or Trips_Place.In ='".$data_q1."' or Trips_Place.Out ='".$data_q1."')";
               print "<form method='post' action='msk.php?val=1&pr=2&day1=".$day1."&month1=".$month1."&year1=".$year1."' name='form1'>";
              }
           else
             {$sql_red = $sql_red . " ((Trips_Place.In<=CURDATE() + INTERVAL 1 DAY AND Trips_Place.Out>CURDATE() + INTERVAL 1 DAY) OR Trips_Place.In = CURDATE() + INTERVAL 1 DAY OR Trips_Place.Out = CURDATE() + INTERVAL 1 DAY)";
              print "<form method='post' action='msk.php?val=1&pr=2' name='form1'>";
             }
           $sql_red = $sql_red. $sql_or;
      ?>
      <h2 align="center">Список сотрудников <? if(($day1)and($month1)and($year1)) {
        echo " с ".$data_v1; 
        if(($day2)and($month2)and($year2)) 
          echo " по ".$data_v2; 
        }
      else echo " на ".$data_t;
      ?>.</h2>
      <table align="center" id=spisok width="800" class='MyTable' style='table-layout: fixed;'>
      <thead>
         <tr>
           <th width="20%" id='fam'><b>Фамилия</b></th>
           <th width="20%" id='name'><b>Имя</b></th>
           <th width="20%" id='otc'><b>Отчество</b></th>
           <th width="20%"><b>Примечания</b></th>
           <th><b>Удалить</b></th>
      </thead>
      <tbody align="center">
      
      <?
       $result = mysql_query($sql_red) or die("Query failed : " . mysql_error());  
       $number = MYSQL_NUMROWS($result);

      for ($i=0; $i<$number; $i++){
        $Fam=mysql_result($result,$i,"Staff_Personnel.Fam");
        $Nam=mysql_result($result,$i,"Staff_Personnel.nam");
        $Ser=mysql_result($result,$i,"Staff_Personnel.Sern");
        print "<tr>";
        print "<td><input name=f".($i+1)." id=f".($i+1)." readonly=f".($i+1)." type='text' value=".$Fam.">";
        print "</td>";
        print "<td><input name=n".($i+1)." id=n".($i+1)." readonly=n".($i+1)." type='text' value=".$Nam.">";
        print "</td>";
        print "<td><input name=s".($i+1)." id=s".($i+1)." readonly=s".($i+1)." type='text' value=".$Ser.">";
        print "</td>";
        print "<td><input id='p".($i+1)."' name=p".($i+1)." type=text/></td>";
        print "<td><input value='Удалить' onClick='Del(this);' type='button'/></td>";
        print "</tr>";
      }
     ?>
       <tr>
         <td><input id="Fam1"  type=text/></td>
         <td><input id="Nam1" type=text/></td>
         <td><input id="Otch1" type=text/></td>
         <td><input id="prim1" type=text/></td>
         <td></td>
       </tr>
       <tr>
         <td colspan="3" align="center">
         <input type='button' value='Добавить строку' name='B1' onClick='JSadd()'/>
         </td>
         <td align="center" colspan="2">
           <input type="hidden" value="" name="m">
           <input type="submit" value="Печать списка" name="B2" OnClick="m.value = spisok.rows.length-2; this.submit; location.reload('msk.php?val=1&pr=2');">
         </td>
        </tr>
        </tbody>
        </form>


только здесь печать происходит на той же странице...

Автор: Sardar 2.1.2006, 17:56
Цитата(Ivushka @ 30.12.2005, 08:57)
а если так?

Ты откроешь окно, куда загрузишь print.php, передав GET параметры. Окно не успеет подгрузиться, так как ты form.submit в это окно другую заполненную форму, т.е. все результаты прошлого print.php запроса убиваються.

Я так понял ты выдаёшь всю базу с персоналом на страницу, где (не мало офигевший) менеджер сможет добавлять/удалять людей (но не изменять...). Затем вся база (таблица) со страницы отправляеться на сервер, где и перепишет старые значения из БД.

Думаю и так ясно что подобный подход чреват потерей всей базы при малой ошибке (ой, не вся инфа дошла... smile ), но пока не об этом. В window.open вторым параметром ты передала имя окна (у тебя это print.php из поста выше), вот это имя и укажи в аттрибуте target="<имя>" формы. Тогда при отправке форма отправиться на сервер, а результаты будут загруженны в новом открытом окне. Это я так понял под понятием "передать данные в окно"...

Повторяю, сначала загрузиться print.php указанный в window.open, а когда будет отправлена форма, то будет загружен action формы (у тебя msk.php)

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