实现页面三级联动以及弹出隐藏框

首先让我们看下页面效果,其中的从事专业是三级联动,并且刚开始的时候只显示第一个下拉框,当选择某个专业后再显示选择第二个、第三个下拉框,这种效果用纯js来实现。感兴趣专业中那几个类似于超链接的学科(内科、外科学、妇产科学、儿科学)有个效果就是当点击汉字或者复选框的时候会弹出下一级<div>如下图所示,这种效果也是用纯js实现。


接下来,我就把页面代码粘贴过来,以备以后查询、学习

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="z" uri="controls"%>
<html>
<head>
<d:include file="../user_include.zhtml" />
<title>工作信息</title>
<style>
 .dataTable{margin-top:15px;}
 .dataTable{border-collapse:collapse;border:1px solid #C3CAD0;}
 .dataTable tr td{border:1px solid #C3CAD0;}
 .dataTable .dataTableHead td{color:blue;}
 .dataTable .dataTableHead{background:#BDE0EE;}
 #uid_div11 img{width:84px;}
 #uid_td21 input{margin-right:5px;}
 .thirdUnion{height:26px;margin-right: 5px;}
 .checkboxstyle{font-size:12px;}
 .thirdstyle{color:blue;text-decoration:underline;}
 </style>

<script type="text/javascript">
$(document).ready(function(){
 $("#online_qq_layer").hover(function(){
  if(!$('#onlineService').is(":animated")){
     $('#onlineService').animate({width: 'show', opacity: 'show'}, 'normal',function(){ $('#onlineService').show(); });$('#floatShow').attr('style','display:none');$('#floatHide').attr('style','display:block');
  return false;
  }
   },function(){
  if(!$('#onlineService').is(":animated")){
  $('#onlineService').animate({width: 'hide', opacity: 'hide'}, 'normal',function(){ $('#onlineService').hide(); });$('#floatShow').attr('style','display:block');$('#floatHide').attr('style','display:none');
  }
  }); 
 });
</script>
<style>
#header #headercontent .netlink a{margin:0;}
#uid_div11 img{width:auto;}
.hyzxmain2{width:740px;}
#ckbTD label{
 display:inline-block;
 font-size: 12px;
 line-height: 28px;
}
 .parentOne { width: 100%; margin-left: 30px;position: relative; }
 .parentTwo{width:33%;display: inline-block;}
 .thirdDiv{
 position: absolute;
 background:white;
 border:1px solid black;
 display:none;
 }
 
</style>
</head>
<body>
<div id="online_qq_layer">
 <div id="online_qq_tab">
  <div class="online_icon">
   <a title id="floatShow" style="display: block;" href="javascript:void(0);">&nbsp;</a>
   <a title id="floatHide" style="display: none;" href="javascript:void(0);">&nbsp;</a>
  </div>
 </div> 
 <d:include file="../newright.zhtml" />
</div>
<d:include file="../newhead.zhtml" />
<!--container 开始-->
<div class="vipMain clearself">
 <div class="position">您的位置:<a href="${contextPath}${$Page.Index}" class="postion">会员中心</a> &gt; 工作信息</div>
 <div class="vipLeft fl">
     <d:include file="../newmenu.zhtml" />  
 </div>
 <div class="vipRight fr">
  <h2 class="defult_title">工作信息</h2>
  <div class="formBoxs">
            <div class="lib_Contentbox">
             <div id="con_one_3" >               
                <form id="form1">
     <table style="width:719px;" border="0" cellspacing="0" cellpadding="0"
      class="jbxxtable">
      <tr>
       <td width="139" align="right">职业:&nbsp;</td>
       <td width="580" align="left">
       <d:code code="Occupation" varCode="bean" varList="codelist">
         <select name="MetaValue_Occupation" id="MetaValue_Occupation" style="height:28px;margin-top:1px;" class="hyzxbox3">
         <option value="">请选择</option>
          <z:foreach data="${codelist}">
           <option value="${value.CodeValue}">${value.CodeName}</option>
          </z:foreach>
         </select>
           </d:code></td>
      </tr>
      <tr>
       <td align="right">工作医院:&nbsp;</td>
       <td align="left"><label for="textfield6"></label> <input
        type="text" name="MetaValue_WorkHospital" id="WorkHospital" class="hyzxbox1"
        value="" /></td>
      </tr>
      <tr>
       <td align="right">其他单位:&nbsp;</td>
       <td align="left"><label for="textfield6"></label> <input
        type="text" name="MetaValue_OtherBranch" id="OtherBranch" class="hyzxbox1"
        value="" /></td>
      </tr>
      <tr>
         <td></td>
         <td align="left"><span class="tishimsg2">[正确选择从事专业和感兴趣专业,将会让您享受更好的个性化服务,请您根据工作需要选择]</span></td>
      </tr>
      <tr>
       <td style="line-height: 26px;"  align="right">从事专业:&nbsp;<br>
         <span class="tishimsg">(建议填写)&nbsp;&nbsp;</span>
       </td>
       <td width="530" align="left">
       <d:code code="JobMajor" varCode="bean" varList="codelist">
       <script>
        var jobMajorData=${(toJSON(codelist))};
        var kvData={};
        var rootData=[];
        function getParentItem(key,item){
         if(key.lastIndexOf('.')>0){
          return kvData[key.substring(0,key.lastIndexOf('.'))];
         }
         return null;
        }
        for(var i in jobMajorData){
         var item=jobMajorData[i];
         var key=item.CodeValue;
         var text=item.CodeName;
         if(key&&text){
          kvData[key]={Key:key,Text:text,Children:[],Parent:null};
         }
        }
        for(var key in kvData){
         var item=kvData[key];
         var parent=getParentItem(key);
         if(!parent){
          if(item.Key&&item.Text){
           rootData.push(item);
          }
         }else{
          parent.Children.push(item);
          item.Parent=parent;
         }
        }
        
        function selectMajor(el){
         var level=$(el).attr("level");
         var key=el.value;
         var item=kvData[key];
         var children=item.Children;         
         $("select[level="+(parseInt(level)+1)+"]").remove();
         $("select[level="+(parseInt(level)+2)+"]").remove();
         if(children.length>0){
          var select=document.createElement("select");
          select.name=""; 
          level=parseInt(level)+1;
          $(select).attr("level",level);
          $(select).attr("class",'thirdUnion');
          var firstOption=document.createElement("option");
          firstOption.value='';
          if(level==1){
           firstOption.text='请选择二级专业';
          }else if(level==2){
           firstOption.text='请选择三级专业';
          }
          select.appendChild(firstOption);
          for(var i=0;i<children.length;i++){
           var option=document.createElement("option");
           option.value=children[i].Key;
           option.text=children[i].Text;
           select.appendChild(option);
          }
          $(select).bind("change",function(el,value,level){
           return function(){            
            selectMajor(el,level)
           }
          }(select,select.level));          
          $(el).after(select);
         }
        }
        document.write('<select name="MetaValue_Major" id="MetaValue_Major" class="thirdUnion" οnchange="selectMajor(this)" level="0">');
        document.write('<option value="">请选择一级专业</option>');
        for(var i=0;i<rootData.length;i++){
         document.write('<option value="'+rootData[i].Key+'">'+rootData[i].Text+'</option>')
        }
        document.write("</select>")
        
       </script> 
           </d:code>
      </td>
      </tr>
      <tr>       
       <td style="line-height: 26px;" valign="top" align="right">感兴趣专业:&nbsp;<br>
         <span class="tishimsg">(建议填写)&nbsp;&nbsp;</span>
       </td>
       <td align="left" id="ckbTD">
        <script>
        function selectChild(el){
         $(el).parent().parent().next().find("input[type=checkbox]").each(function(){
          this.checked=el.checked;
         });
        }
        function showOrSelect(el,value){
         el=$(el).prev()[0];
         var thirdDiv=document.getElementById("thirdDiv"+value);
         $(".thirdDiv[id!=thirdDiv"+value+"]").hide();
         $("#thirdDiv"+value).toggle("fast");
        }
        function twoClick(el){
         $(el).next().next().find("input[type=checkbox]").each(function(){
          this.checked=el.checked;
         });
        }
        for(var i=0;i<rootData.length;i++){
         var item=rootData[i];         
         var children=item.Children;
         document.write('<div><label><input name="MetaValue_InterestMajor" type="checkbox" class="checkboxstyle" ');
         if(children&&children.length>0){
          document.write('οnclick="selectChild(this)"');
         }
         document.write('value="'+item.Key+'">'+item.Text+'</label>')
         document.write("</div>")
         if(children&&children.length>0){       
          document.write('<div class="parentOne">');           
          for(var j=0;j<children.length;j++){
           document.write('<div class="parentTwo">'); 
           var child=children[j];
           var thirdArray=child.Children;           
           if(thirdArray.length>0){
            document.write('<input name="MetaValue_InterestMajor" type="checkbox" οnclick="twoClick(this)" value="'+child.Key+'"'); 
            document.write(' /><label class="thirdstyle" οnclick="showOrSelect(this,'+(j+1)+')">'+child.Text+'</label>');
            document.write('<div id="thirdDiv'+(j+1)+'" class="thirdDiv" style="width:165px;height:'+(thirdArray.length)*28+'px">');
            for(var k=0;k<thirdArray.length;k++){
             document.write('<label><input name="MetaValue_InterestMajor" type="checkbox" value="'+thirdArray[k].Key+'"/>'+thirdArray[k].Text+'</lable>');
             if(k<thirdArray.length-1){
              document.write('<br>');
             }             
            }
            document.write('</div>');
           }else{
            document.write('<label><input name="MetaValue_InterestMajor" type="checkbox" value="'+child.Key+'"'); 
            document.write(' />'+child.Text+'</label>');
           }
           document.write('</div>');
          }
          document.write('</div>');           
         }
        }
        </script>        
       </td>
      </tr>
      <tr>
       <td align="left">&nbsp;</td>
       <td align="left">
       <div class="tijiaobut">
          <input type="image" src="${$Theme.StaticPath}images/memberimg/hyzxlefttablebut2.gif" width="84" οnclick="dosave();return false;" height="31">
          <input type="image" src="${$Theme.StaticPath}images/memberimg/hyzxlefttablebut1.gif" width="84" οnclick="document.forms['form1'].reset()" height="31"> 
       </div></td>
      </tr>
     </table>
    </form>
              </div>
            </div>
  </div>
 </div>
</div>
<!--container end-->
<div class="clear"></div>
<div id="footer">
<d:include file="../footer.zhtml" />
</div>

<d:metaData var="MeteData" code="User" pk="${AccessUnit.ID}">
 <script>
 function dosave(){
  debugger
  Server.sendRequest("saveExtend",Form.getData("form1"),function(response){
   debugger
   if(response.Status==1){
    alert("成功")
   }
  });
 }
 
  $(function() {
   init();
  })
  function init() {
   var jsonData = ${(toJSON(MeteData))};
   for ( var key in jsonData) {
    var elements = document.getElementsByName(key);
    if (!(elements && elements.length > 0)) {
     continue;
    }
    var len = elements.length;
    for (var i = 0; i < len; i++) {
     var element = elements[i];
     var value = jsonData[key];
     if (element.type == "checkbox" || element.type == "radio") {
      if (typeof (value) == "string") {
       var values = value.split(',');
       var size = values.length;
       for (var j = 0; j < size; j++) {
        if (element.value == values[j]) {
         element.checked = "checked";
        }
       }
      } else if (element.value == value) {
       element.checked = "checked";
      }
     } else if (element.type == "text") {
      element.value = value;
     }else {
      element.value = value;
     }
    }
   }
  }
 </script>
</d:metaData>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值