我正在使用 codeigniter 创建一个示例测验网页。在我的一个观点中,有一个场景,其中有一个计时器,当它达到零时,应该提交表单。我已经尝试了一个代码并且计时器工作但是当它达到零时提交的调用没有完成,所以我无法导航到下一页。但是当点击提交按钮时工作正常。下面是我的代码。任何人都可以帮我找到我哪里出错了。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test Your Knowledge</title>
<script type="text/javascript">
var totalsec = 50;
var c_min = parseInt(totalsec / 60);
var c_sec = parseInt(totalsec % 60);
function CheckTime() {
document.getElementById("timer").innerHTML = "Time left: " + c_min + " min " + c_sec + " sec ";
if (totalsec <= 0) {
document.getElementById("difficultyForm").submit();
} else {
totalsec = totalsec - 1;
c_min = parseInt(totalsec / 60);
c_sec = parseInt(totalsec % 60);
setTimeout("CheckTime()", 1000);
}
}
setTimeout("CheckTime()", 1000);
</script>
<style type="text/css">
</style>
</head>
<body>
<div id="container">
<h1>Welcome to Test Your Knowledge!!!</h1>
<div id="body">
<h2>Selected the difficulty level: Easy</h2>
<div><span id="timer"></span></div>
<form action="/AWT_CW1/index.php/ResultController/" method="POST" id="difficultyForm" name="difficultyForm">
<?php
foreach ($quesAnsList as $quesAns) {
echo '<question>';
echo '<strong>' . $quesAns->question . '</strong>';
echo '<br>';
echo '<input type="radio" name="' . $quesAns->answer_id . '" value="' . $quesAns->answer1 . '">' . $quesAns->answer1 . ' <br>';
echo '<input type="radio" name="' . $quesAns->answer_id . '" value="' . $quesAns->answer2 . '">' . $quesAns->answer2 . ' <br>';
echo '<input type="radio" name="' . $quesAns->answer_id . '" value="' . $quesAns->answer3 . '">' . $quesAns->answer3 . ' <br>';
echo '</question>';
}
?>
<input type="submit" name="submit" value="Submit">
</form>
</div>
</div>
</body>
</html>
注意:我被要求不要在这个项目中使用 jquery 或 ajax。提前致谢。
最佳答案
为什么你的代码不工作
那是因为您将提交按钮命名为“提交”,覆盖了 submit() 函数。
如何解决问题
你可以通过替换来修复它
<input type="submit" name="submit" value="Submit">
与
<input type="submit" name="submit_button" value="Submit">
请记住...
正如@Rajesh 在评论中指出的那样,setTimeout 需要一个函数作为第一个参数,而您提供的是一个字符串。
将 setTimeout("CheckTime()", 1000);
替换为
setTimeout(function(){
CheckTime();
}, 1000);
关于javascript - 使用javascript在php中计时器达到零时不调用提交方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33698468/