下拉框问题!有两个下拉框,一个是数据库表里的字段,另一个是相应字段的内容,怎样才能实现当第一个下拉框选一个字段时,第二个下拉框能自动 do a javascript function with a "onchange" in html language 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一个下拉onchange刷新页面,用pageContext.setAttribute,第二个直接用pageContext.getattribute取到关联的数据 当第一个下拉框的选项改变时,将value传递给页面,查询数据库,在第二个下拉框中显示 对于有级联关系的两个选择框,我更习惯把第一个表和第二个表的内容全都保存到前台javascript 中的二维数组中(当然仅限于数据量不大) ,当用户选择第一个下列列表框时,激发一个onchange事件,写个语句遍历一下二维数组中的对应维,很简单的 ,不过看你这个需求,搞两个数组也就行了。javascript数组都支持用名称来构建,比如Array a=new Array();a(1)=“小明”;a(2)=“小王”;Array a=new Array();a(1)=“1”;a(2)=“2”;当用户点击选择名称时 foreach (aa in a){ select2.options.add(aa.value)}当用户点击编号时foreach (bb in b){ select2.options.add(bb.value)} 注意两个数组都不时写死的,时在后台动态生成的。语法肯定时不通的,很长时间写的代码了,反正意思就时这个意思 <html><title>select</title><head> <SCRIPT LANGUAGE="JavaScript"> //如果是三个字段设定//var a = new Array(new Array(),new Array(),new Array());var a = new Array(new Array(),new Array()); var recordCount=5;//数据库中的记录数 function optionOnload(){ for(var i=0;i<a.length;i++){ a[i][0]="0字段名"+i; document.all.zd.add(new Option(a[i][0])); document.all.zd.options[i].value=i; } for(var n=0;n<a.length;n++){ for(var j=1;j<recordCount;j++){ a[n][j]=n+"jl"+j; } } } function test(){ if(document.all.divjl.innerHTML!=""){ document.all.divjl.innerHTML=""; document.all.divjl.innerHTML="<select name='jl' onchange='alert(this.value);'> <select>"; }else{ document.all.divjl.innerHTML="<select name='jl'> <select>"; } var zdValue=document.all.zd.value; for(var j=1;j<a[zdValue].length-1;j++){ document.all.jl.add(new Option(a[zdValue][j])); document.all.jl.options[j-1].value=a[zdValue][j]; } }</script> <body onload="optionOnload();"><select name="zd" onchange="test();"> </select><div id="divjl" name="divjl"><select></select></div></body></html> test2.jsp:=============<%@ page import="java.util.ArrayList, java.util.List "%><html><SCRIPT LANGUAGE="JavaScript">function chg(tis,evt){// if(tis.selectedIndex==0)return; location.href='test2.jsp?ziduan='+tis.selectedIndex;}</SCRIPT><% List lst = new ArrayList(); String index = request.getParameter("ziduan"); if("1".equals(index)){ //访问数据库,返回“名称”字段的值,放到一个list中 //这里假造数据 lst.add("小王"); lst.add("小李"); }else if("2".equals(index)){ //编号字段的值 lst.add("1"); lst.add("2"); }%><body> <select onchange=chg(this,event) > <option >请选择字段</option> <option <%if("1".equals(index)){%>selected<%}%>>名称</option> <option <%if("2".equals(index)){%>selected<%}%>>编号</option> </select> <select id=sel2> <option > </option><%for(int i=0;i<lst.size();i++){%> <option value='<%=lst.get(i)%>'><%=lst.get(i)%></option><%}%> </select></body></html> 你不会连访问数据库的代码都不会写吧?在上边代码中的 if("1".equals(index)){}else if("2".equals(index)){}两个if里边就是放上访问数据库的代码,把返回的数据集倒入到lst中就行啊,数据集本来就是动态的,例子中是为了演示硬编码的例子数据 flowingshadow谢啦!访问数据库的代码我还是会一点的,呵呵。我再试试! 一个页面中多个DIV提交表单问题 hibernate死锁问题 [咨询贴,急!!!] sql语句问题 【在线等】JSP中JavaBean问题 org.apache.jasper.JasperException textarea回车问题 现在WEB上出现的那种弹出框是用什么做的 项目移交测试组做系统测试的时候,开发工程师做什么? params.htm提交到params.jsp的问题? 希望提出的问题已经解决了的,快速结贴,以不耽误其它兄弟的问题 提问: 关于过滤器的问题 认为自己过滤器不错的高手进!! 实现一个字符串的简单加密及解密,只要简单到“加密后看不出原来的意思”就可以了,如何实现?
取到关联的数据
Array a=new Array();
a(1)=“小明”;
a(2)=“小王”;
Array a=new Array();
a(1)=“1”;
a(2)=“2”;
当用户点击选择名称时
foreach (aa in a)
{
select2.options.add(aa.value)
}
当用户点击编号时
foreach (bb in b)
{
select2.options.add(bb.value)
} 注意两个数组都不时写死的,时在后台动态生成的。
语法肯定时不通的,很长时间写的代码了,反正意思就时这个意思
<title>select</title>
<head>
<SCRIPT LANGUAGE="JavaScript">
//如果是三个字段设定
//var a = new Array(new Array(),new Array(),new Array());
var a = new Array(new Array(),new Array());
var recordCount=5;//数据库中的记录数
function optionOnload(){
for(var i=0;i<a.length;i++){
a[i][0]="0字段名"+i;
document.all.zd.add(new Option(a[i][0]));
document.all.zd.options[i].value=i;
}
for(var n=0;n<a.length;n++){
for(var j=1;j<recordCount;j++){
a[n][j]=n+"jl"+j;
}
}
}
function test(){
if(document.all.divjl.innerHTML!=""){
document.all.divjl.innerHTML="";
document.all.divjl.innerHTML="<select name='jl' onchange='alert(this.value);'> <select>";
}else{
document.all.divjl.innerHTML="<select name='jl'> <select>";
}
var zdValue=document.all.zd.value;
for(var j=1;j<a[zdValue].length-1;j++){
document.all.jl.add(new Option(a[zdValue][j]));
document.all.jl.options[j-1].value=a[zdValue][j];
}
}
</script>
<body onload="optionOnload();">
<select name="zd" onchange="test();"> </select>
<div id="divjl" name="divjl"><select></select></div>
</body>
</html>
=============
<%@ page import="java.util.ArrayList,
java.util.List
"%><html>
<SCRIPT LANGUAGE="JavaScript">
function chg(tis,evt)
{
// if(tis.selectedIndex==0)return;
location.href='test2.jsp?ziduan='+tis.selectedIndex;
}
</SCRIPT>
<%
List lst = new ArrayList();
String index = request.getParameter("ziduan");
if("1".equals(index)){
//访问数据库,返回“名称”字段的值,放到一个list中
//这里假造数据
lst.add("小王");
lst.add("小李");
}else if("2".equals(index)){
//编号字段的值
lst.add("1");
lst.add("2");
}
%>
<body>
<select onchange=chg(this,event) >
<option >请选择字段</option>
<option <%if("1".equals(index)){%>selected<%}%>>名称</option>
<option <%if("2".equals(index)){%>selected<%}%>>编号</option>
</select>
<select id=sel2>
<option > </option>
<%for(int i=0;i<lst.size();i++){%>
<option value='<%=lst.get(i)%>'><%=lst.get(i)%></option>
<%}%>
</select>
</body>
</html>
if("1".equals(index)){
}else if("2".equals(index)){
}两个if里边就是放上访问数据库的代码,把返回的数据集倒入到lst中就行啊,数据集本来就是动态的,例子中是为了演示硬编码的例子数据