我想楼主应该在alert之后判断一下当前时间是否已经过期,并提交数据。
或者在alert之前生成一个透明层,alert之后再取消它,这样也可以防止用户超时后无法再继续操作。

解决方案 »

  1.   

    直接设个timer当时间到期或超期时强制提交考卷
    我用JS写了个试了下,不会像楼主说的最后一秒点提交,如果没完成说不提交
    而过了之后要好几秒再提交
    不晓的楼主的代码是朗个写的
      

  2.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title><script language="javascript">
    function $(id){return document.getElementById(id);}
    function check()
    {
      if($("input_1").value=="")
         {
     alert("not completed");
     return false;
     }
      else{
       $("f1").submit();
       return true;
       }
      
    }
    var time_st="";function timer()
    {  if(time_st==""){var dt=new Date();time_st=dt.getTime();} 
      var dd=new Date();
      var time_ed=dd.getTime();  if(time_ed-time_st>=10000)
         {
           $("f1").submit();
       clearTimeout(timeID);
     }
       else
       {
       $("show").innerHTML=String(10-Math.round((time_ed-time_st)/1000));
       setTimeout("timer()",1000);
       }
      
    }</script>
    </head><body>
    </body><form id="f1" action="test.html" onSubmit='return check()'>
    <input type="text" id="input_1" value=""><span id="show"></span>
    <input type="button" value="sum" onClick="check()">
    </form>
    <script>timer()</script>
    </html>
      

  3.   

    因为alert函数会中断程序执行,所以如果仅仅作为信息提示,其实可以考虑模拟,而不直接采用alert。
      

  4.   

    楼上的不好,我这个更适合你。
    var flag=document.getElementById("txtflag");
    if(flag.value!="1")
    {
    var OBJ2=Exam_test.getuser();
    if(OBJ2.value.Tables[0].Rows[0]["Retirement_division"]==0)
    {
    var OBJ3=Exam_test.getAnswer_QuType();

    if(OBJ3.value.Tables[0].Rows[0]["Answered"]==0)
    {
    if(OBJ3.value.Tables[0].Rows[0]["QuestionType"]==1)
    {
        var questionName = document.getElementById("TextBox1").value;
    if(confirm("「"+questionName+"」"+"fd"))
    {

    document.getElementById("Table1").style.display="inline";
    Exam_test.InsertBasicInfo();
    var strUser=document.getElementById("txtUser");
    var strDuty=document.getElementById("txtDuty");
    var user=OBJ2.value.Tables[0].Rows[0]["EmployeeName"];
    var duty=OBJ2.value.Tables[0].Rows[0]["Employment_title"];
    strUser.value=user;
    if(duty==null)

    {strDuty.value="";}
    else
    {strDuty.value=duty;}

    var OBJ=Exam_test.getexam();
    var strName=document.getElementById("txtName");
    var strRe=document.getElementById("txtRe");
    var Name=OBJ.value.Tables[0].Rows[0]["QuestionName"];
    var Re=OBJ.value.Tables[0].Rows[0]["Res"];
    strName.value=Name;
    if(Re==null)
    {strRe.value="";}
    else
    {strRe.value=Re;}

    var secs=OBJ.value.Tables[0].Rows[0]["Times"];

    if(secs!=0)
    {
    var min=Math.floor(secs/60);
    var sec=secs%60;
    if (min<10)
    {
    min = "0" + min;
    }
    if (sec<10) 
    {
    sec = "0" + sec;
    }


    var strMin=document.getElementById("txtMin");
    strMin.value=min;


    var strSec=document.getElementById("txtSec");
    strSec.value=sec;


    doUpdate();

    }
    else
    {
    document.getElementById("Table3").rows[3].style.display="none";
    }
    }
    else
    {

    //window.location="http://";
    window.opener=null;
    window.close();
    }
    }
    else
    {
    document.getElementById("Table1").style.display="inline";
    var strUser=document.getElementById("txtUser");
    var strDuty=document.getElementById("txtDuty");
    var user=OBJ2.value.Tables[0].Rows[0]["EmployeeName"];
    var duty=OBJ2.value.Tables[0].Rows[0]["Employment_title"];
    strUser.value=user;
    if(duty==null)

    {strDuty.value="";}
    else
    {strDuty.value=duty;}

    var OBJ=Exam_test.getexam();
    var strName=document.getElementById("txtName");
    var strRe=document.getElementById("txtRe");
    var Name=OBJ.value.Tables[0].Rows[0]["QuestionName"];
    var Re=OBJ.value.Tables[0].Rows[0]["Res"];
    strName.value=Name;
    if(Re==null)
    {strRe.value="";}
    else
    {strRe.value=Re;}

    var secs=OBJ.value.Tables[0].Rows[0]["Times"];

    if(secs!=0)
    {
    var min=Math.floor(secs/60);
    var sec=secs%60;
    if (min<10)
    {
    min = "0" + min;
    }
    if (sec<10) 
    {
    sec = "0" + sec;
    }


    var strMin=document.getElementById("txtMin");
    strMin.value=min;


    var strSec=document.getElementById("txtSec");
    strSec.value=sec;


    doUpdate();

    }
    else
    {
    document.getElementById("Table3").rows[3].style.display="none";
    }
    }

    }
    else
    {
    alert('dd');

    //window.location="http://";
    window.opener=null;
    window.close();
    }
    }
    else
    {
    alert('dddd');

    //window.location="http://";
    window.opener=null;
    window.close();
    }
    }
                }
               
                var time_st="";
               function doUpdate()
                {
    //var OBJ=Exam_test.getexam();
    //var secs=OBJ.value.Tables[0].Rows[0]["Times"];
    if(time_st==""){var dt=new Date();time_st=dt.getTime();} 
    var dd=new Date();
    var time_ed=dd.getTime();

    var strMin=document.getElementById("txtMin");
    var min=strMin.value;
    var strSec=document.getElementById("txtSec");
    var sec=strSec.value;


    //if(time_ed-time_st>=secs*1000)
    if(min=="00" && sec=="00")
    {
    var t=time_ed-time_st;

    alert(t);
    clearTimeout(timerID);
    document.getElementById("Table1").style.display="none";
    var strMin=document.getElementById("txtMin");
    strMin.value="00";
    var strSec=document.getElementById("txtSec");
    strSec.value="00";

    document.Form1.btnSubmit.click();

    }
    else
    {
    timerID=setTimeout("doUpdate()",1000);
    var i;
    var j;
    var strMin=document.getElementById("txtMin");
    var strSec=document.getElementById("txtSec");
    var Sec=strSec.value;
    var Min=strMin.value;
    j=Min;
    if(Sec==0)
    {
    i="60";
    }
    else
    {
    i=Sec;
    }
    i=i-1;
    if (i<10) 
    {
                            
    if (i<=0)
    {
    i = "00";   
    }
    else
    {
    i = "0" + i;
    }
    }   
    strSec.value=i;

    if(i==59)
    {
    j=j-1;
    if (j<10) 
    {
    if (j <=0)
    {
    j = "00";
    }
    else
    {
    j = "0" + j;
    }
    }
    strMin.value=j;
    }