下拉框联动 (转)

本文介绍了一种通过Java和JavaScript实现的下拉框联动方法。该方案涉及两个Java类(MultiSelect.java和SelectJS.java)、两个JSP页面及一个JavaScript文件。主要功能包括生成用于联动的Array数组,并在页面上实现下拉框之间的联动效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下拉框联动 (转)[@more@]

下拉框联动有两个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)) + "); ");
  }

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



var citys = new Array();

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

function 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 进行页面使用




无标题文档




RM method="post">
 

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()) {
 %>
 
 
 


 
 没有回答
 


 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-956554/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-956554/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值