Задержка действия после нажатия на форму - PullRequest
0 голосов
/ 07 мая 2009

У меня есть следующий код, чтобы открыть форму во всплывающем окне. Я хочу, чтобы после нажатия кнопки «Отправить» всплывающее предупреждение появлялось через 1250 миллисекунд. В настоящее время это не работает, поскольку страница перенаправляется на результат отправки формы.

<?php
$blah = "Well"; $test = "Done";
echo '<script type="text/javascript" src="fetchlayers.js"></script>';
$formcode = "<form action=\"process.php\" method=\"post\" enctype=\"multipart/form-data \"><label for=\"file\">Filename:</label><input type=\"file\" name=\"file\" id=\"file\"/> <br /><input type=\"submit\" name=\"submit\" value=\"Submit\" onclick=\"setTimeout(function() { alert('$blah'); },1250);\" /></form>";


echo "<h1>hello</h1>
<div id='form'>
<a href='#' onclick=\"createpopup('" . htmlentities($formcode) . "'); return false;\">
click here</a>
</div>";

Как лучше всего отложить действие после отправки формы?

Ответы [ 3 ]

1 голос
/ 07 мая 2009

попробуйте использовать document.form.submit () внутри функции обратного вызова таймера вместо использования кнопки отправки

0 голосов
/ 07 мая 2009

Как лучше всего отложить действие после отправки формы?

Вы просто не можете выполнять эти две операции в том же порядке из одного и того же окна. Как только форма отправляется, вы фактически покидаете состояние текущей страницы и запрашиваете новый ресурс.

Из вашего всплывающего окна у вас будет ссылка на родительское окно. Когда пользователь хочет отправить форму, вы можете вызвать JavaScript для выполнения отложенного действия в родительском окне, а затем разрешить отправку формы во всплывающем окне.

РЕДАКТИРОВАТЬ: на основе вашего комментария здесь способ связи между окнами; Вы можете иметь простую настройку, как это:

<!-- parent.html -->
<input type="button" onclick="doOpenChild();" value="Spawn Child Window" />

<script type="text/javascript">
  function doOpenChild() {
    window.open(
      "child.html",
      "child"
    );
  }

  function doSomething() {
    setTimeout(
      function(){
        alert(fileINeedToCheck);
      },
      2000
    );
  }

  // Set variable for child to update...
  window.fileINeedToCheck = "unset";
</script>

Создать всплывающее окно с чем-то вроде этого:

<!-- child.html -->
<form action="/someaction.php" name="childForm" onsubmit="communicateWithParent(this);">
  <input type="text" name="fileName" value="100" />
  <input type="submit" value="Submit" />
</form>

<script type="text/javascript">
  function communicateWithParent(aForm) {
    if(window.opener) {
      if(window.opener.fileINeedToCheck) {
        window.opener.fileINeedToCheck = aForm.fileName.value;

        // You can also call functions from the parent window...
        window.opener.doSomething();
      }
    }
  }
</script>

Переменную родительского окна можно обновить значениями из дочернего окна.

0 голосов
/ 07 мая 2009

Если я правильно понимаю, вы хотите открыть всплывающее окно, содержащее форму, а после отправки формы показать окно предупреждения?

Попробуйте использовать window.opener в вашем обратном вызове setTimeout (). Таким образом, вы можете указать исходному окну отобразить окно предупреждения - не должно иметь значения, что ваша всплывающая страница была перенаправлена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...