<%@ 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"填充?
<%
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"填充?
<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;
就可以了。
这个时候,名字就不重复了
<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()">
如果照你的写法,那我在javascipt里面怎么获取每一个answer的值呢?
还有我要把空的answer填充"error",怎么实现呢?
jackkui(键 之 舞 者
问题的数量是根据数据库里面的条数自动生成的,开始并不知道有多少条
我在servlet里面怎么获取answer的值?
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>");
}
}}
而且用js的话,考生可以通过查看源码就可以轻易获得答案,似乎也不太好,呵呵
由于你前面有了这一段
<form name="form" action="/ExamOnline/CheckAnswer" onSubmit="return checkAnswer()">
所以只要简单地在servlet中用
request.getParameterByName("answer"+i);
就可以获取,至于i的最大值,可以在页面中加个隐藏文本框,提交的时候赋值一下就行
我用js只是为了做非空判断,
因为我在servlet里面用
String[] answer=request.getParameterValues("answer");
它得到的只是非空数据
如果我不在前台判断的话,如果中间有一个没填的那么后面的答案跟着都错了.
谢谢!
没有这个方法!
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...
明白了吧