关于两个下拉框的问题,请大家帮忙,在线等、、、、、、 如果纯是用jsp做,好像不可能。jsp能调用自身么?除非你数据库里面的数据都固定了,像上面用javacript写的那样,不再向库中添加数据了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以定义一个IFRAME第一个下拉菜单OnChange中使IFRAME调用另一页面进行数据库处理并生成第二个下拉框的选项 我给你找了一个下拉框联动的例子!你看看吧下拉框联动有两个java类,两个jsp页面,和一个js组成。MultiSelect.java该类用于生成实现联动需要的Array数组package select;import java.util.*;import java.sql.*;import java.io.*;public class MultiSelect { /** *产生JavaScript中用于联动的array代码 *以省市为例 *一般为了javascript程序的方便,建议输出格式为: *subcat1[subcat1.length] = new Array("江阴","12.10","12"); *其中"江阴"的值为"12.10","12"对应江苏省,越大的范围的值越往后 *subcat1[subcat1.length] = new Array("常州","12.11","12"); **/ public static String getArray(String name, String sql) throws java.sql.SQLException { Connection conn=null; try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test", "test", "test"); } catch (java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: " + e.getMessage()); } Statement stmt = conn.createStatement(); ResultSet rs=stmt.executeQuery(sql); StringBuffer sb = new StringBuffer(); while(rs.next()){ sb.append(name + "[" + name + ".length] = new Array(" + getString(rs.getString(0),rs.getString(1),rs.getString(2)) + ");\n"); } return sb.toString(); } private static String getString(String s1,String s2,String s3) { String temp = "\"" + s1 + "\",\""+s2+"\",\""+s3+"\""; return temp; }}--------------------------------------------------------------------------------SelectJS 该类主要是用来生成sql语句。package select;public class SelectJS { /** * 写出sql,调用 * @param name 数组名称 * @return * @throws java.sql.SQLException */ public static String getProducts(String name) throws java.sql.SQLException { return MultiSelect.getArray(name, "select describe,code,fcode from testone " ); }}---------------------------------------------------------------------------------citys.jsp主要是用来得到Array数组<%@ page contentType="text/html;charset=GB2312" %><%@ page import="select.*"%>var citys = new Array();<%=SelectJs.getDealerCity("citys")%>-----------------------------------------------------------------------------------select.js 主要是用来显示下拉框中的数据function clearselect(Aa){ clearList(Aa); Aa.options[Aa.length] = new Option("没有回答", "");} //use "" to clear all:(值的索引为1)//Aa为被联动的select,//locationid为主联动值,//arr为用于生成的Array,//index1为Array中用于比较主联动值的索引function changelocation1(Aa,locationid,arr,index1){ clearselect(Aa); var i; for (i=0;i < arr.length; i++){ if (arr[i][index1] == locationid ){ Aa.options[Aa.length] = new Option(arr[i][0], arr[i][1]); } }} //from chinaquestfunction clearList(ctrl){ if (document.all) { for(;ctrl.options.length>0;) ctrl.options.remove(ctrl.options.length-1); }else{ for(;ctrl.options.length>0;) ctrl.options[ctrl.options.length-1] = null; }}-------------------------------------------------------------------------------------selecttest.jsp 进行页面使用<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title></head><script language="JavaScript" src="citys.jsp"></script><script language="JavaScript" src="select.js"></script><body><form method="post"> <select name="sel_brand" onchange="changelocation1(this.form.elements['sel_city'],this.value,citys,2);"> <% String sql="select code,Describe from testone "; ResultSet rs=stmt.executeQuery(sql); while(rs.next()) { %> <option value="<%=rs.getString(0)%>"><%=rs.getString(1)%></option> <% } %> </select> <select name="sel_city"> <option value="">没有回答</option> </select></form></body></html> 可以,两种做法,1、整个页面刷新,重新去数据库取值。2、事先将所有选项取出放在页面上,如同ukyer说得一样。 小弟我是这么写的,很简陋,大家多提意见 function change(str1,str2) { str2.value=str1.value }<td width="153" align="right" height="30"><b>新预定软件编号:</b></td> <td width="284" height="30"> <select size="1" name="select1" onchange="change(select1,select2)"> <% String sFileName = "*"; String sTableName = "SoftInfo"; ResultSet rs = null; rs = test.executeQuery(sFileName,sTableName); while(rs.next()) { String dd=rs.getString("Softid"); %> <option value='<%=dd%>'><%=rs.getString("SoftID")%></option> <% } rs.close(); %> </select> </td> </tr> <tr> <td width="153" align="right" height="18"><b>新预定软件名称:</b></td> <td width="284" height="15"> <select size="1" name="select2" onchange="change(select2,select1)"> <%rs = test.executeQuery(sFileName,sTableName); while(rs.next()) { %> <option value='<%=rs.getString("SoftID")%>'><%=rs.getString("Softname")%> </option> <% } rs.close(); %></select> 是纯用的jsp.方法有点丑,不过好处是容易^_^嗨嗨 如果想用JAVASCRIPT实现,要写一个长长的JAVASCRIPT,大家可能极讨厌这个东西,用JSP实现,刷幕丑用FRAME实现吧,或者用IFRAME实现, 可以掩盖一下,不会那么丑,一个FRAME中装一个小JSP用APPLET,也不是太简单.肯定还有更好的办法的. 直接能用的。<HTML><HEAD><TITLE> New Document </TITLE><META NAME="Generator" CONTENT="EditPlus"><META NAME="Author" CONTENT=""><META NAME="Keywords" CONTENT=""><META NAME="Description" CONTENT=""><style type="text/css">body{font-family:Courier New, Courier}select{font-size:8pt;font-family:Courier New, Courier}input{font-size:8pt;font-family:Courier New, Courier}</style><SCRIPT LANGUAGE="JavaScript"><!--var Name=new Array(3);var Value=new Array(3);Name[1]=new Array("Zosatapo1","Zosatapo2","Zosatapo3","Zosatapo4");Name[2]=new Array("Reic Yang1","Reic Yang2","Reic Yang3","Reic Yang4");function change(){selIndex=document.all("test").selectedIndex;if(document.all("test").selectedIndex==0) return;for(i=document.all("test").options.length-1;i>-1;i--){ document.all("test").options.remove(i);} for(i=0;i<Name[selIndex].length;i++){document.all("test").options.add(new Option(Name[selIndex][i],"name"+i));}}function changeEx(){for(i=document.all("sub").options.length;i>0;i--){document.all("sub").options.remove(i-1);}if(document.all("main").selectedIndex==0){document.all("sub").options.add(new Option("==========","-1"));return;}selIndex=document.all("main").selectedIndex;for(i=0;i<Name[selIndex].length;i++){document.all("sub").options.add(new Option(Name[selIndex][i],"name"+i));}}function reset(){for(i=document.all("test").options.length-1;i>-1;i--){ document.all("test").options.remove(i);}document.all("test").options.add(new Option("==========","-1"));document.all("test").options.add(new Option("Zosatapo","1"));document.all("test").options.add(new Option("Reic Yang","2"));}function display(object){alert(object.options[object.selectedIndex].text+" "+object.options[object.selectedIndex].value);}//--></SCRIPT></HEAD><BODY BGCOLOR="#FFFFFF">First Sample:<br><font color="blue">All items will change After you Selected!</font><br><SELECT id="test" onchange="change();"><option value="-1" selected>==========<option value="1">Zosatapo<option value="2">Reic Yang</SELECT><input name="Reset Select" type="button" value="Reset Select" onclick="reset();" ><br><br>Second Sample:<br><font color="blue">You selected Item in Main Select will change the Sub select Content!</font><br>Main Select:<SELECT id="main" onchange="changeEx();"><option value="-1" selected>==========<option value="1">Zosatapo<option value="2">Reic Yang</SELECT>Sub Select:<SELECT id="sub" onchange="display(this);"><option value="-1" selected>==========</SELECT><br><br></BODY></HTML> 求高手解释一条sql? 是否能更改他人软件安装包 Unix下weblogic里用JFreeChart 表单提交内容中文乱码 textarea 如何限制每行的长度 达到长度后 自动换行 帮忙找个错啊!困饶我2天了!100分相送. 大家帮我看这段代码 错误在哪? 哪位知道国内有没有比较好的jsp 空间的提供商? 如何得到客户机器的mac地址 b&s和c&s结构-------------经验之谈,欢迎参加!!!!!! 怎么在公司自己学习? 如何运行servlets 程序 ?
第一个下拉菜单OnChange中使IFRAME调用另一页面进行数据库处理
并生成第二个下拉框的选项
下拉框联动有两个java类,两个jsp页面,和一个js组成。MultiSelect.java
该类用于生成实现联动需要的Array数组package select;import java.util.*;
import java.sql.*;
import java.io.*;public class MultiSelect { /**
*产生JavaScript中用于联动的array代码
*以省市为例
*一般为了javascript程序的方便,建议输出格式为:
*subcat1[subcat1.length] = new Array("江阴","12.10","12");
*其中"江阴"的值为"12.10","12"对应江苏省,越大的范围的值越往后
*subcat1[subcat1.length] = new Array("常州","12.11","12");
**/
public static String getArray(String name, String sql) throws java.sql.SQLException {
Connection conn=null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test", "test", "test");
} catch (java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: " + e.getMessage());
}
Statement stmt = conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
StringBuffer sb = new StringBuffer(); while(rs.next()){
sb.append(name + "[" + name + ".length] = new Array(" + getString(rs.getString(0),rs.getString(1),rs.getString(2)) + ");\n");
} return sb.toString(); } private static String getString(String s1,String s2,String s3) { String temp = "\"" + s1 + "\",\""+s2+"\",\""+s3+"\"";
return temp;
}
}
--------------------------------------------------------------------------------
SelectJS 该类主要是用来生成sql语句。
package select;public class SelectJS { /**
* 写出sql,调用
* @param name 数组名称
* @return
* @throws java.sql.SQLException
*/
public static String getProducts(String name) throws java.sql.SQLException {
return MultiSelect.getArray(name,
"select describe,code,fcode from testone "
);
}}---------------------------------------------------------------------------------
citys.jsp主要是用来得到Array数组<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="select.*"%>
var citys = new Array();
<%=SelectJs.getDealerCity("citys")%>-----------------------------------------------------------------------------------
select.js 主要是用来显示下拉框中的数据function clearselect(Aa){ clearList(Aa); Aa.options[Aa.length] = new Option("没有回答", "");}
//use "" to clear all:(值的索引为1)//Aa为被联动的select,//locationid为主联动值,//arr为用于生成的Array,//index1为Array中用于比较主联动值的索引function changelocation1(Aa,locationid,arr,index1){
clearselect(Aa);
var i;
for (i=0;i < arr.length; i++){
if (arr[i][index1] == locationid ){
Aa.options[Aa.length] = new Option(arr[i][0], arr[i][1]);
}
}
}
//from chinaquestfunction clearList(ctrl){ if (document.all) { for(;ctrl.options.length>0;) ctrl.options.remove(ctrl.options.length-1); }else{ for(;ctrl.options.length>0;) ctrl.options[ctrl.options.length-1] = null; }
}-------------------------------------------------------------------------------------
selecttest.jsp 进行页面使用<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script language="JavaScript" src="citys.jsp"></script>
<script language="JavaScript" src="select.js"></script>
<body>
<form method="post">
<select name="sel_brand" onchange="changelocation1(this.form.elements['sel_city'],this.value,citys,2);">
<%
String sql="select code,Describe from testone ";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {
%>
<option value="<%=rs.getString(0)%>"><%=rs.getString(1)%></option>
<% } %>
</select>
<select name="sel_city">
<option value="">没有回答</option>
</select>
</form>
</body>
</html>
1、整个页面刷新,重新去数据库取值。
2、事先将所有选项取出放在页面上,如同ukyer说得一样。
{
str2.value=str1.value
}<td width="153" align="right" height="30"><b>新预定软件编号:</b></td>
<td width="284" height="30"> <select size="1" name="select1" onchange="change(select1,select2)">
<% String sFileName = "*";
String sTableName = "SoftInfo";
ResultSet rs = null;
rs = test.executeQuery(sFileName,sTableName); while(rs.next())
{
String dd=rs.getString("Softid");
%>
<option value='<%=dd%>'><%=rs.getString("SoftID")%></option>
<%
}
rs.close(); %> </select> </td>
</tr>
<tr>
<td width="153" align="right" height="18"><b>新预定软件名称:</b></td>
<td width="284" height="15">
<select size="1" name="select2" onchange="change(select2,select1)">
<%rs = test.executeQuery(sFileName,sTableName);
while(rs.next())
{
%>
<option value='<%=rs.getString("SoftID")%>'><%=rs.getString("Softname")%>
</option>
<% }
rs.close();
%></select>
^_^嗨嗨
用APPLET,也不是太简单.肯定还有更好的办法的.
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style type="text/css">
body{font-family:Courier New, Courier}
select{font-size:8pt;font-family:Courier New, Courier}
input{font-size:8pt;font-family:Courier New, Courier}
</style>
<SCRIPT LANGUAGE="JavaScript">
<!--
var Name=new Array(3);
var Value=new Array(3);
Name[1]=new Array("Zosatapo1","Zosatapo2","Zosatapo3","Zosatapo4");
Name[2]=new Array("Reic Yang1","Reic Yang2","Reic Yang3","Reic Yang4");function change()
{
selIndex=document.all("test").selectedIndex;
if(document.all("test").selectedIndex==0)
return;for(i=document.all("test").options.length-1;i>-1;i--)
{
document.all("test").options.remove(i);
} for(i=0;i<Name[selIndex].length;i++)
{
document.all("test").options.add(new Option(Name[selIndex][i],"name"+i));
}}function changeEx(){
for(i=document.all("sub").options.length;i>0;i--)
{
document.all("sub").options.remove(i-1);
}
if(document.all("main").selectedIndex==0){
document.all("sub").options.add(new Option("==========","-1"));
return;}
selIndex=document.all("main").selectedIndex;for(i=0;i<Name[selIndex].length;i++)
{
document.all("sub").options.add(new Option(Name[selIndex][i],"name"+i));
}}function reset(){
for(i=document.all("test").options.length-1;i>-1;i--)
{
document.all("test").options.remove(i);
}document.all("test").options.add(new Option("==========","-1"));document.all("test").options.add(new Option("Zosatapo","1"));document.all("test").options.add(new Option("Reic Yang","2"));}function display(object){
alert(object.options[object.selectedIndex].text+" "+object.options[object.selectedIndex].value);
}
//-->
</SCRIPT>
</HEAD><BODY BGCOLOR="#FFFFFF">
First Sample:<br><font color="blue">All items will change After you Selected!</font><br>
<SELECT id="test" onchange="change();">
<option value="-1" selected>==========
<option value="1">Zosatapo
<option value="2">Reic Yang
</SELECT><input name="Reset Select" type="button" value="Reset Select" onclick="reset();" ><br><br>Second Sample:<br><font color="blue">You selected Item in Main Select will change the Sub select Content!</font><br>
Main Select:<SELECT id="main" onchange="changeEx();">
<option value="-1" selected>==========
<option value="1">Zosatapo
<option value="2">Reic Yang
</SELECT>Sub Select:<SELECT id="sub" onchange="display(this);">
<option value="-1" selected>==========
</SELECT><br><br>
</BODY>
</HTML>