Как лучше всего отложить действие после отправки формы?
Вы просто не можете выполнять эти две операции в том же порядке из одного и того же окна. Как только форма отправляется, вы фактически покидаете состояние текущей страницы и запрашиваете новый ресурс.
Из вашего всплывающего окна у вас будет ссылка на родительское окно. Когда пользователь хочет отправить форму, вы можете вызвать 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>
Переменную родительского окна можно обновить значениями из дочернего окна.