<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ page import="com.accp.dao.*"%>
<%@ page import="com.accp.bean.*"%>
<%@ page import="java.sql.*"%>
<%
ResultSet rs=new enterSubject().selectSub();
String number=null;
String subject=null;

 %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'answer.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!-- -->
<script type="text/javascript">
function checkAnswer()
{
var answer=document.getElementById("answer");
}
</script>
  </head>
    <form name="form" action="/ExamOnline/CheckAnswer" onSubmit="return checkAnswer()">
   <table align="center">
   <tr></tr>
   <%
  
   while(rs.next())
   {
   number=rs.getString("number");
   subject=rs.getString("subject");
   %>
 
   <tr>
   <td><%=number%></td>
   </tr>
   <tr>
   <td><%=subject%></td>
   </tr>
   <tr>
   <td><input type="text" id="answer" name="answer"/></td>
   </tr>
 
   <%} %>
   </table>
   </br>
   <input type="Submit" value="submit"/>
      </form>
  <body>
    
  </body>
</html>如果我有10条纪录,用户输入答案提交后,如何判断是否有空的答案?
如果有空的答案如何用"error"填充?

解决方案 »

  1.   

    为什么不把
    <td><input type="text" id="answer" name="answer"/></td>
    这一行改成
    <%
      i++;
      String ans="<td><input type=\"text\" id=\"answer"+i+"\" name=\"answer"+i+"\"/></td>"
    %>
    <%=ans%>
    呢,这样只要在前面初始化一个int i=0;
    就可以了。
    这个时候,名字就不重复了
      

  2.   

    不修改这样也可以
    <SCRIPT>
    function fnGetNames(){
       // Returns a collection with 2 INPUT type=text elements.
       var aInput=document.getElementsByName("firstName");
       //按照从上向下的顺序就能够便利所有的name为firstName的text
       alert(aInput[0].value);
       alert(aInput[1].value);
    }
    </SCRIPT>
    <INPUT TYPE="text" NAME="firstName">
    <INPUT TYPE="text" NAME="firstName">
    <INPUT TYPE="button" VALUE="Get Names" onclick="fnGetNames()">
      

  3.   

    ywb1973(谁)
    如果照你的写法,那我在javascipt里面怎么获取每一个answer的值呢?
    还有我要把空的answer填充"error",怎么实现呢?
    jackkui(键 之 舞 者
    问题的数量是根据数据库里面的条数自动生成的,开始并不知道有多少条
      

  4.   

    ywb1973(谁)
    我在servlet里面怎么获取answer的值?
      

  5.   

    jackkui(键 之 舞 者) 说的对
    Enumeration a = request.getParameterNames()
     while(a.hasMoreElements())   
      {   
        
        String   n=(String)a.nextElement();     
        if("answer".equals(n)){
        String[]   name=request.getParameterValues(n);
           
        for(int   i=0;i<name.length;i++)   
        {   
          out.print(name[i]+"<br>");   
        }   
          
      }}      
        
      

  6.   

    我觉得你最初的设计思路不太对,既然由servlet来批卷,那用js就没有什么意义了
    而且用js的话,考生可以通过查看源码就可以轻易获得答案,似乎也不太好,呵呵
    由于你前面有了这一段
    <form name="form" action="/ExamOnline/CheckAnswer" onSubmit="return checkAnswer()">
    所以只要简单地在servlet中用
    request.getParameterByName("answer"+i);
    就可以获取,至于i的最大值,可以在页面中加个隐藏文本框,提交的时候赋值一下就行
      

  7.   

    ywb1973(谁)(★☆◎☆★) 
    我用js只是为了做非空判断,
    因为我在servlet里面用
    String[] answer=request.getParameterValues("answer");
    它得到的只是非空数据
    如果我不在前台判断的话,如果中间有一个没填的那么后面的答案跟着都错了.
      

  8.   

    谁能把js里面判断answer是否为空的代码写完整?
    谢谢!
      

  9.   

    request.getParameterByName("answer"+i);
    没有这个方法!
      

  10.   

    非不非空,在后台也可以判断的,在前台做唯一的理由就是减少提交的次数,但此处好像没有必要
    request.getParameterByName("answer"+i);是要放在循环里面的
    首先
    i=Integer.parseInt(request.getParameterByName("i").toString());
    然后
    String answer[]=new String(i+1);
    for (int cnt=1;i<=i;i++){
      if(request.getParameterByName("answer"+i))!=null{
        answer[i]=request.getParameterByName("answer"+i).toString();
      }
      else answer[i]="error";
    }
    //上面request.getParameterByName()的参数此时就是answer1、answer2...
    明白了吧