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

时间:2015-03-09 20:14:13

标签: javascript php

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

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

3 个答案:

答案 0 :(得分:1)

这一行有几个问题:

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

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

答案 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>