我正在尝试在倒计时结束后提交文件(return_url
)。在我下面的当前代码中,文档在倒计时开始后提交。如何在提交document_url
之前完成倒计时?
代码:
<body>
<center>
<form name="redirect"><font face="Helvetica"><b>
Thank you! You will be redirected in<input type="text" size="1" style="font-size:25px" name="redirect2">seconds.</b></font>
</form></form>
</center>
<form name="return_url" method="post" action="confirm.php">
<input type="hidden" name="order" value="1" />
<input type="hidden" name="price" value="100" />
</form>
</body>
</html>
<script language="javascript" type="text/javascript">
var targetURL="<?php print_r($_POST['url_retorno']);?>"
var countdownfrom=10
var currentsecond=document.redirect.redirect2.value=countdownfrom+1
function countredirect(){
if (currentsecond!=1){
currentsecond-=1
document.redirect.redirect2.value=currentsecond
} else {
window.location=targetURL
return
}
setTimeout("countredirect()",1000)
}
countredirect()
document.return_url.submit()
</script>
答案 0 :(得分:0)
重要的是,您不应该自动为用户提交表单,这是一种糟糕的用户体验设计。相反,您可以在提交禁用按钮的内容之前等待,直到计时器启动。为此,您只需要使用javascript计时器。
var timer = window.setInterval(updateClock,1000);
var countdown = 10;
function updateClock() {
countdown--;
if(countdown<=0) {
window.clearInterval(timer);
//ALLOW THE FORM TO SUBMIT
document.getElementById("elementID").disabled = false
} else {
document.getElementById("elementID").value = "PLEASE WAIT "+countdown+" SECONDS";
}
}
我还要补充一点,你永远不要相信人们投入的形式。查找XSS或跨站点脚本,以及SQL注入以找出原因。所以你需要使用验证(即使是数字)。如果你想进行页面验证(因为它可以被旁路,它仍然不是很安全),你可以在表单标签中添加onSubmit="validate()"
属性,以便在用户最终执行时调用validate()
函数提交它。使用此功能还可以让您在需要时接管表单,因为您可以执行任何您想要的JavaScript,只需返回“false”值将导致表单无法提交。
始终在服务器级别验证您的表单条目(即在confirm.php文件中)
答案 1 :(得分:0)
尝试以下方法:
setTimeout(function() {document.return_url.submit();}, 10000);
这应该是你所需要的一切。
或者如果要显示计时器,请使用setInterval();
var seconds_left = 10;
var timer = setInterval(countdown, 1000);
function countdown() {
seconds_left--;
if (seconds_left) {
console.log(seconds_left); //or modify the DOM
} else {
document.return_url.submit();
clearInterval(timer);
}
}