do a javascript function with a "onchange" in html language

解决方案 »

  1.   

    第一个下拉onchange刷新页面,用pageContext.setAttribute,第二个直接用pageContext.getattribute
    取到关联的数据
      

  2.   

    当第一个下拉框的选项改变时,将value传递给页面,查询数据库,在第二个下拉框中显示
      

  3.   

    对于有级联关系的两个选择框,我更习惯把第一个表和第二个表的内容全都保存到前台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)
    } 注意两个数组都不时写死的,时在后台动态生成的。
    语法肯定时不通的,很长时间写的代码了,反正意思就时这个意思
      

  4.   

    <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>
      

  5.   

    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 >&nbsp;&nbsp;</option>
    <%for(int i=0;i<lst.size();i++){%>
            <option value='<%=lst.get(i)%>'><%=lst.get(i)%></option>
    <%}%>
        </select>
    </body>
    </html>
      

  6.   

    你不会连访问数据库的代码都不会写吧?在上边代码中的
     if("1".equals(index)){

    }else if("2".equals(index)){

    }两个if里边就是放上访问数据库的代码,把返回的数据集倒入到lst中就行啊,数据集本来就是动态的,例子中是为了演示硬编码的例子数据
      

  7.   

    flowingshadow谢啦!访问数据库的代码我还是会一点的,呵呵。我再试试!