我知道如何在一段时间后提交表格。但它似乎不适用于提交按钮。我有一个测验,从数据库中提取问题,并有一个提交按钮。我想让它在几个小时后点击提交按钮,然后转到另一个页面告诉用户它已被提交。
function changeSncro(){
sncro = 1;
return confirm('You are about to close this attempt. Once you close the attempt you will no longer be able to change your answers.')
}
window.onbeforeunload = function (evt) {
if(sncro !=1){
var message = 'If you leave prior to SUBMITTING your test, it WILL NOT be scored and you WILL NOT get another attempt';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt ) {
evt.returnValue = message;
}
return message;
}
}
<script type="text/javascript">
setTimeout('document.test.submit()',5000);
</script>
<input name="test" value="Submit and finish" onclick="return changeSncro()">
答案 0 :(得分:1)
这一行有几个问题:
setTimeout('document.test.submit()',5000);
我会通过一些步骤来改善它。
setTimeout通常应该使用函数而不是字符串来调用,因为它是第一个参数。将它作为字符串使浏览器在字符串上运行eval,这可能非常糟糕。在这种情况下它并不重要,但无论如何我都会改变它以使其成为“更好的代码”。改进版本:
setTimeout(function() {
document.test.submit();
}, 5000);
此外,您可能不应该使用document.test
。如果您需要支持非常旧的浏览器,最佳做法是使用document.querySelector
或document.getElementById
。
如果它确实是您要点击的按钮(而不仅仅是提交表单),您可以使用
document.querySelector('[name="test"]').click();
为了更清楚地说明你点击的内容。
更好的方法可能是提交表单而不是单击按钮(这可能是按钮的作用)。如果是这种情况,您可以为表单提供id或其他可选择的内容:
document.querySelector('#myForm').submit();
正如评论中所提到的,还有其他问题,但我认为这只是将代码复制到问题中。
答案 1 :(得分:0)
您没有显示足够的信息,因此我将尽可能利用有限的信息尽力回答。
您没有
form
提交,所以我要假设submit
您要触发/触发 changeSncro()功能,就像你有onclick活动。
setTimeout(changeSncro,5000);
--------------------的演示强> ------------------- -
function changeSncro(){
alert("Function called!");
}
setTimeout(changeSncro,5000);
<p>Wait 5 seconds for function to call....</p>
<button onclick="changeSncro()">changeSncro</button>
我希望这会有所帮助。快乐的编码!
答案 2 :(得分:0)
@Ineentho你太棒了!我试图保持简单,因为我有很多其他代码。但这是(基本上)我正在尝试做的事情,它现在有效
<script>
setTimeout(function() {
document.querySelector('[name="test"]').click();
}, 5000);
</script>
<script>
function myFunction() {
document.getElementById("demo").innerHTML = "Hello World";
}
</script>
</head>
<body>
<p id="demo"></p>
<p>
<button name="test" id="submit" onclick="myFunction()">Click me</button>
</p>