在一个JSP页面里写程序,动态读取数据库里的内容,在最后的JavaScript问题上卡住了,我想让所有的radio都被选择上,都可以成功提交到下一个页面,请大家帮忙!!!

toxicant 2008-01-21 05:22:13
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>HealthSum1.jsp</title>


</head>
<%!//定义数据库驱动程序
String DBDRIVER = "com.mysql.jdbc.Driver";
//定义数据库连接地址
String DBURL = "jdbc:mysql://localhost:3306/hexie_quiz?user=root&password=1234&useUnicode=true&characterEncoding=UTF-8";
//数据库连接对象
Connection conn = null;
//定义Statement对象,用于操作数据库
PreparedStatement pstmt = null;
//定义一字符串变量,用于保存SQL语句
String sql = null;
//查询返回的结果集对象
ResultSet rs = null;
//单选按钮进行编号累加
int answer_index = 0;%>


<%
//1.加载数据库程序
try {
Class.forName(DBDRIVER);
} catch (Exception e) {
out.println("数据库加载出错!!!");
throw new RuntimeException("e.getMessage()");
}
//2.连接数据库
try {
conn = DriverManager.getConnection(DBURL);
} catch (Exception e) {
out.println("数据库连接失败!!!");
}
//3.操作数据库
//通过Connection对象实例化Statement对象
try {
//编写查询的sql语句
sql = " SELECT * FROM question where Fk_quiz_id = 1;";
pstmt = conn.prepareStatement(sql);

//查询数据库,此方法返回
rs = pstmt.executeQuery();
%>

<form id="myform" name="myform" method="post" action="HealthSum2.jsp">
<table>
<!-- 外循环,得auestion表的 questionname的值 -->
<%
while (rs.next()) {

int id = rs.getInt(1);
String questionname = rs.getString(2);
%>
<tr>
<td><%=questionname%></td>
</tr>


<!-- 内循环,得answer表的 answername的值 -->
<%
//search answers
//lable进行编号累加
int lable_index = 0;
String sql = "SELECT id,answername,value FROM answer a where fk_question_id="
+ id;
System.out.println(sql);
if (conn == null) {
System.out.println("conn is null....");
conn = DriverManager.getConnection(DBURL);
}

PreparedStatement query = conn.prepareStatement(sql);
ResultSet answer_r = query.executeQuery();
if (answer_r == null) {
System.out.println("null.....");
}
while (answer_r.next()) {
int aid = answer_r.getInt(1);
String answername = answer_r.getString(2);
String value = answer_r.getString(3);
%>
<tr>
<td class="input">
<input id="choose<%=answer_index%>" name="choose<%=answer_index%>"
type="radio" value="<%=value%>" />
<label id="lable<%=lable_index%>">
<%=answername%>
</label>
<%
lable_index++;
}
%>
<br>
<br>
</td>
</tr>

<%

answer_index++;
//归零
lable_index = 0;
}
%>
<%
} catch (Exception e) {
out.println("操作数据库失败!!!");
System.out.println(e.getMessage());
e.printStackTrace();
}
%>
</table>
<input value="下一步" type="submit"
style="margin: 10px 0 10px 0; height: 40px; width: 200px;"
onClick="return test()">
</form>
<%
//4.关闭数据库
try {
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
out.println("数据库关闭失败!!!");
}

System.out.println(answer_index);
%>
-----》》》》问题卡在这里,验证有问题,想要的是所有raio都被选中,有一个没有选中,就弹出第几个没有选中,只有全部选中,才可以成功提交到下一个页面
<script language="javascript">function test(){
alert("START...");
if((document.getElementById("lable0").checked==false &&
(document.getElementById("lable1").checked==false &&
(document.getElementById("lable2").checked==false)){alert("请选择...");return false;}document.getElementById("myform").action="HealthSum2.jsp";}
</script>
<%
//归零
answer_index = 0;
%>
</html>
...全文
426 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yansanjianke 2010-12-27
  • 打赏
  • 举报
回复
.......
goodmrning 2008-01-23
  • 打赏
  • 举报
回复
关注
toxicant 2008-01-23
  • 打赏
  • 举报
回复

<%//程序我做了修改,现在这个版本上,还是实现不了javascript的功能验证,解决者有分!!!%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>HealthSum1.jsp</title>


</head>
<%!//定义数据库驱动程序
String DBDRIVER = "com.mysql.jdbc.Driver";
//定义数据库连接地址
String DBURL = "jdbc:mysql://localhost:3306/hexie_quiz?user=root&password=1234&useUnicode=true&characterEncoding=UTF-8";
//数据库连接对象
Connection conn = null;
//定义Statement对象,用于操作数据库
PreparedStatement pstmt = null;
//定义一字符串变量,用于保存SQL语句
String sql = null;
//查询返回的结果集对象
ResultSet rs = null;
//单选按钮进行编号累加
int answer_index = 0;

%>


<%
//得到QuizSum.jsp页面的quizid(跟数据库的quiz_id没有关系)
int a = Integer.parseInt( request.getParameter("quizid"));
//1.加载数据库程序
try {
Class.forName(DBDRIVER);
} catch (Exception e) {
out.println("数据库加载出错!!!");
throw new RuntimeException("e.getMessage()");
}
//2.连接数据库
try {
conn = DriverManager.getConnection(DBURL);
} catch (Exception e) {
out.println("数据库连接失败!!!");
}
//3.操作数据库
//通过Connection对象实例化Statement对象
try {
//编写查询的sql语句,用来动态拿DB中的数据
sql = " SELECT * FROM question where Fk_quiz_id = " + a;
pstmt = conn.prepareStatement(sql);

//查询数据库,此方法返回
rs = pstmt.executeQuery();
%>

<form id="myform" name="myform" method="post" action="HealthSum2.jsp">
<table>
<!-- 外循环,得auestion表的 questionname的值 -->
<%
while (rs.next()) {

int id = rs.getInt(1);
String questionname = rs.getString(2);
%>
<tr>
<td><%=questionname%></td>
</tr>


<!-- 内循环,得answer表的 answername的值 -->
<%
//search answers
//lable进行编号累加
int lable_index = 0;
String sql = "SELECT id,answername,value FROM answer a where fk_question_id="
+ id;
System.out.println(sql);
if (conn == null) {
System.out.println("conn is null....");
conn = DriverManager.getConnection(DBURL);
}

PreparedStatement query = conn.prepareStatement(sql);
ResultSet answer_r = query.executeQuery();
if (answer_r == null) {
System.out.println("null.....");
}
while (answer_r.next()) {
int aid = answer_r.getInt(1);
String answername = answer_r.getString(2);
String value = answer_r.getString(3);
%>
<tr>
<td class="input">
<input id="choose<%=answer_index%>" name="choose<%=answer_index%>"
type="radio" value="<%=value%>" />
<label id="lable<%=lable_index%>">
<%=answername%>
</label>
<%
lable_index++;
}
%>
<br>
<br>
</td>
</tr>

<%

answer_index++;
//归零
lable_index = 0;
}
%>
<%
} catch (Exception e) {
out.println("操作数据库失败!!!");
System.out.println(e.getMessage());
e.printStackTrace();
}
%>
</table>

<%//在form里定义一个隐藏域,取名为count,为了动态拿radio的name %>
<input type="hidden" value="<%=answer_index%>" name="count"/>
<%//这个隐藏域,取名为quiz2id,为了是HealthSum2.jsp里的SQL语句动态拿到quiz表的excontent字段%>
<input type="hidden" value="<%=a %>" name="quiz2id"/>
<input value="下一步" type="submit"
style="margin: 10px 0 10px 0; height: 40px; width: 200px;"
onClick="return test()">
</form>
<%
//4.关闭数据库
try {
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
out.println("数据库关闭失败!!!");
}

System.out.println(answer_index);
%>
-----》》》》问题卡在这里,验证有问题,想要的是所有raio都被选中,有一个没有选中,就弹出第几个没有选中,只有全部选中,才可以成功提交到下一个页面
-----》》》》
<script language="javascript">
function test(){
var radioNum = <%=answer_index %>;
for(var i=0;i<=radioNum;i++){
if(document.getElementById("lable"+i).checked==false){
alert("请选择"+i);
return false;
}
}
return true;
</script>
<%
//归零
answer_index = 0;
%>
</html>
toxicant 2008-01-23
  • 打赏
  • 举报
回复
自己解决,结贴!!
toxicant 2008-01-22
  • 打赏
  • 举报
回复
还是有问题,请大家再帮我看看!!
<script language="javascript">
function test(){
alert("验证QuizSum");
var radio_num = <%=answer_index%>;
alert("radio个数:"+radio_num);
var radio_sum = 0;
var radio_obj;
for(var i=1;i<radio_num;i++){
alert("开始判断...");
alert(i);

radio_obj = document.getElementById("choose"+i);
alert(radio_obj.name);
alert("是否选中..."+radio_obj.checked);
if(!radio_obj.checked){
alert("第"+i+"项没选中,请重新选择!");
return false;
}
radio_sum += radio_obj.value;
}
alert("radio的求和"+radio_sum.value());
document.getElementById("myform");
}

</script>
老紫竹 2008-01-21
  • 打赏
  • 举报
回复
根据你前面radio的数量作一个循环判断就可以了

function   test(){ 
for(var i=0;i<=<%=lable_index%>;i++){
if(document.getElementById("lable"+i).checked==false){
alert("请选择"+i);
return false;
}
}
return true;

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧