javascript - 使用javascript在php中计时器达到零时不调用提交方法

标签 javascript php codeigniter timer

我正在使用 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/

相关文章:

php - Symfony 翻译在产品中不起作用

PHP 命名空间移除/映射和重写标识符

php - SQL Select 查询返回不需要的数据

php - 将用户分配到我的 PHP 应用程序中的多个项目,最佳方法?

javascript - 在网络上收听 child_changed(Firebase 实时数据库)

javascript - 使用 FirebaseUI 创建通用登录应用程序

javascript - 将子路由设为默认

javascript - 当浏览器检索缓存的 html 页面时,JavaScript 会再次运行吗?

php - 如何从 CodeIgniter 的 View 中替换制表符和新行?

php - Codeigniter mysql 中的 sql 查询结果为空