2

我写了以下代码。使用此代码按提交按钮手动提交表单。我还有一个计时器,我想在 10 秒后自动提交表单。但它不起作用。它一直计数到 0,然后它什么也不做。你能告诉我我错过了什么或如何更改我的计时器(如果有,是问题所在)吗?但我希望用户以观看计时器为例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript">
    function countDown(secs,elem)
    {
        var element = document.getElementById(elem);
        element.innerHTML = "<h2>You have <b>"+secs+"</b> seconds to answer the questions</h2>";
        if(secs < 1){
        clearTimeout(timer);
        document.getElementById('myquiz').submit();
        }
        secs--;
        var timer = setTimeout ('countDown('+secs+',"'+elem+'")',1500);
    }
</script> 
<div id="status"></div>
<script type="text/javascript">countDown(5,"status");</script>
 <title>Questionnaire</title>
<style type="text/css"> 
    span {color: #FF00CC}
</style>
</head>
<body>
<h1>Please complete the following Survey</h1>
<form name="quiz" id ="myquiz" method="post" action="includes/process.php">
First Name: <input type="text" name="firstname" id="fname"/>
<p></p>
Last Name: <input type="text" name="lastname" id="lname"/>
<p></p>
<input type="submit" name="submit" value="Go"></input>
<input type="reset" value="clear all"></input>
</form>
</body>
</html>
4

5 回答 5

3

产生此错误的三个错误。

  • 您在表单属性中有错字。后面有一个空格id。应该是id="myquiz"
  • 您的表单有一个名为“提交”的按钮,这是错误的。它覆盖了函数。将其命名为“提交按钮”或其他名称。
  • 未定义“验证”方法。它应该返回 true。

顺便说一下,超时时间不对,应该是1000。

工作示例:plunk

于 2013-08-04T17:08:13.693 回答
1

不要这样做:

var timer = setTimeout ('countDown('+secs+',"'+elem+'")',1500);

countDown. 每 1500 次,您就会countDown再次致电。

将其放在页面底部(在结束body标记之前)

<script type="text/javascript">
secs = 10;
timer = setInterval(function () {
    var element = document.getElementById("status");
    element.innerHTML = "<h2>You have <b>"+secs+"</b> seconds to answer the questions</h2>";
    if(secs < 1){
        clearInterval(timer);
        document.getElementById('myquiz').submit();
    }
    secs--;
}, 1000)

顺便说一句:在哪里validate()声明?

没有测试它,但它应该可以解决问题。

于 2013-08-04T17:07:07.043 回答
1

你必须提交一个表单,而不是一个元素,所以试试这个:

document.forms["quiz"].submit();

或者,如果它是您可以使用的唯一形式

document.forms[0].submit();
于 2013-08-04T17:17:07.257 回答
1

此代码将起作用:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <script type="text/javascript">
            function countDown(secs, elem)
            {
                var element = document.getElementById(elem);
                element.innerHTML = "<h2>You have <b>"+secs+"</b> seconds to answer the questions</h2>";
                if(secs < 1) {
                    document.quiz.submit();
                }
                else
                {
                    secs--;
                    setTimeout('countDown('+secs+',"'+elem+'")',1500);
                }
            }

            function validate() {
                return true;
            }
            </script> 
            <div id="status"></div>
            <script type="text/javascript">countDown(5,"status");</script>
            <title>Questionnaire</title>
            <style type="text/css"> 
            span { 
                color: #FF00CC;
            }
            </style>
        </head>
        <body>
            <h1>Please complete the following Survey</h1>
            <form name="quiz" id="myquiz" onsubmit="return validate()" method="post" action="includes/process.php">
                First Name: <input type="text" name="firstname" id="fname"/>
                <p></p>
                Last Name: <input type="text" name="lastname" id="lname"/>
                <p></p>
                <input type="submit" name="submitbutton" value="Go"></input>
                <input type="reset" value="clear all"></input>
            </form>
        </body>
    </html>
于 2013-08-04T17:25:54.017 回答
0

定义函数等待为

function caller()
{
    setInterval(submit_now, 10000);
}
function submit_now()
{
    document.forms["quiz"].submit();
}

解释:

1)。函数将在调用函数wait()之前设置 10 秒 (10000) 毫秒的时间间隔。submit_now()

2)。另一方面submit_now(),在调用此函数时,请务必提交您的表单数据。

于 2013-08-04T17:25:14.227 回答