一段时间后自动点击提交按钮

automatically hit submit button after a time period

本文关键字:提交 按钮 一段时间      更新时间:2023-09-26

我知道如何在一段时间后提交表格。但它似乎不适用于提交按钮。我有一个测验,它从数据库中提取问题并有一个提交按钮。我希望它在几个小时后点击提交按钮,然后转到另一个页面,告诉用户它已提交。

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()">

此行有几个问题:

setTimeout('document.test.submit()',5000);

我将逐步完成一些步骤以使其更好。

setTimeout 通常应该使用函数而不是字符串作为第一个参数调用。将其作为字符串会导致浏览器在字符串上运行 eval,这可能非常糟糕。在这种情况下,这并不重要,但无论如何我都会更改它以使其成为"更好的代码"。改进版本:

setTimeout(function() {
    document.test.submit();
}, 5000);

此外,您可能不应该使用document.test。最佳做法是使用 document.querySelectordocument.getElementById 如果您需要支持非常旧的浏览器。

如果它确实是您要单击的按钮(而不仅仅是提交表单),您可以使用

document.querySelector('[name="test"]').click();

为了使您点击的内容更加清晰。

更好的可能是提交表单而不是单击按钮(这可能是按钮的作用)。如果是这种情况,您可以为表单提供一个 id 或其他可选择的内容,并且:

document.querySelector('#myForm').submit();

正如评论中提到的,还有其他问题,但我认为这只是从将代码复制到问题中。

您没有

显示足够的信息,所以我将用有限的信息尽我所能回答。

您没有要提交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>

我希望这有所帮助。祝您编码愉快!

@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>