首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

两个CHECKBOX,依据前一个的选择,自动改变后面checkbox选项内容

2013-01-06 
两个CHECKBOX,根据前一个的选择,自动改变后面checkbox选项内容比如这样一个场景:医院A:科室a,科室b,科室c

两个CHECKBOX,根据前一个的选择,自动改变后面checkbox选项内容
比如这样一个场景:

医院A:科室a,科室b,科室c
医院B:科室d,科室e,科室f

checkbox内容:
第一个checkbox, 选择医院: A 或者B
第二个checkbox,根据选择的医院A或B显示对应的科室。

如: 第一个checkbox选择A,则在第二个CHECKBOX列表里显示选项a,b,c
     第一个checkbox选择b,则在第二个CHECKBOX列表里显示选项d,e,f

现在觉得没什么思路,能提供一些思路么~~
[解决办法]
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'MyJsp.jsp' starting page</title>
    
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">    
 
 <%
  /*
   级联菜单形式,最好由ajax做,那样页面显示的更友好,现在使用javascript演示
   已经测试通过,具体操作请按情况区别。
   
  */
  
  /*-------------------------Method----------------------------*/
  
  /*第一级菜单 封装成Map集合,方便页面取值*/
  Map<String,String> mapOne = new HashMap<String,String>();
  mapOne.put("A","A");
  mapOne.put("B","B");
 %>
 
 <!-- 该javascript用来生成二级联动菜单 -->
 <script type="text/javascript">
  /*声明两个数组,以便区别,具体操作,应该是通过底层返回一个list*/
  var one = new Array("a","b","c");
  var two = new Array("d","e","f");

  /*该函数,控制二级级联操作*/
  function specieSelChange(selBox)
  {
   /*
    这些数据需要重数据库中取,我没有连接数据库,所以自己拟定数据,数据封装根据具体情况而定
    这是第二级菜单,需要级联的菜单
   */
   var str = "<select>";
   if(selBox.value == "A")
   {
    for(var i = 0; i < one.length; i ++)
    {
     str += "<option>" + one[i] + "</option>";
    }
   }
   else if(selBox.value == "B")
   {
    for(var i = 0; i < two.length; i ++)
    {
     str += "<option>" + two[i] + "</option>";
    }
   }
   str += "</select>";
   document.all('Linkage').innerHTML = str;
  }
 </script>
 
  </head>
  
  <body>
  
    <!-- 页面开始解析数据   首先是第一个下拉框-->
    <table border="0" align="center" style="font-size: 12px;">


     <tr>
      <td>请选择种类:</td>
      <td>
       <!-- 页面使用循环取出数据 如果需要更标准,请使用jstl标签,或者struts标签 -->
       <select id="SpecieSel" onchange="specieSelChange(this)">
       <%
        Iterator it = mapOne.entrySet().iterator();
        while(it.hasNext()){
         Map.Entry entry = (Map.Entry)it.next();
       %>
         <option value="<%=(String)entry.getKey() %>">
          <%=(String)entry.getValue() %>
         </option>
       <%} %>
       </select>
      </td>
     </tr>
     <!-- 第二个下拉框,开始执行二级联动 -->
     <tr>
      <td>
       二级联动下拉框:
      </td>
      <td id="Linkage">
       <!-- 该下拉框,使用自动生成 -->
       <select>
        <option>---请选择---</option>
       </select>
      </td>
     </tr>
    </table>
  </body>
</html>
[解决办法]
我倒是觉得楼主可能是想弄一个option样的东西  而不是一个checkbox 。其实思路都很简单  就是在第一个checkbox上添加js函数,然后通过执行这个函数  判断你选择了A还是选择B    之后根据这个判断的结果   设置第二个checkbox中的内容 (如果需要从数据库查数据  比如这些科室内容是从数据库中获取的   那就动态创建一些checkbox) 

引用:
比如这样一个场景:

医院A:科室a,科室b,科室c
医院B:科室d,科室e,科室f

checkbox内容:
第一个checkbox, 选择医院: A 或者B
第二个checkbox,根据选择的医院A或B显示对应的科室。

如: 第一个checkbox选择A,则在第二个CHECKBOX列表里显示选项a,b,c
     第一个checkbox选择b,……

热点排行
Bad Request.