我有以下代码在弹出窗口中打开表单。我想在点击提交按钮后,在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>";
提交表单后采取延迟行动的最佳方式是什么?
答案 0 :(得分:1)
尝试在计时器回调中使用document.form.submit()而不是使用提交按钮
答案 1 :(得分:0)
如果我理解正确,您想要打开一个包含表单的弹出窗口,然后在提交表单后显示一个警告框?
尝试在setTimeout()回调中使用window.opener。通过这种方式,您可以告诉原始窗口显示警告框 - 您的弹出页面已被重定向无关紧要。
答案 2 :(得分:0)
提交表单后采取延迟行动的最佳方式是什么?
您无法从同一窗口按顺序执行这两项操作。一旦表单提交,您就会有效地离开当前页面的状态并请求新资源。
从弹出窗口中,您将获得父窗口的引用。当用户想要提交表单时,您可以调用一些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>
可以使用子窗口中的值更新父窗口的变量。