• 自定义级联下拉框


            2018年4月16号,周一,阳光明媚,暂时告一段落(for something),继续做个安静的小女子:

            先看效果:

            相信各位大同学对于这样的级联框非常熟悉了吧?为了避免自己以后再次用到这样的功能(现成的级联组件暂不讨论),特地记录下自己实现这一小功能的步骤,于人于己都方便:


     1 ...
     2     <div class="col-sm-11">
     3                     <label class="control-label col-sm-1" style="padding: 7px 0 0 0">大类:</label>
     4                     <div  class="col-sm-3">
     5                         <select id="bigcate" class="form-control" name="bigcate" onchange="bigcateChange('bigcate','areabargain','finalbargain')">
     6                             <option value="-99" selected="selected">请选择</option>
     7                         </select>
     8                     </div>
     9                     <label class="control-label col-sm-1" style="padding: 7px 0 0 0">父类:</label>
    10                     <div  class="col-sm-3">
    11                         <select id="areabargain" class="form-control" name="areabargain" onchange="bigcateChange('areabargain','finalbargain')">
    12                             <option value="-99" selected="selected">请选择</option>
    13                         </select>
    14                     </div>
    15                     <label class="control-label col-sm-1" style="padding: 7px 0 0 0">指标:</label>
    16                     <div  class="col-sm-3">
    17                         <select class="selectpicker form-control" data-live-search="true" id="finalbargain" name="finalbargain">
    18                             <option value="-100" selected="selected">请选择</option>
    19                         </select>
    20                     </div>
    21                 </div>
    22 ...
     1  //当大类及父类改变时触发
     2     function bigcateChange(firstName,secondName,thirdName) {
     3         var bigAreaValue=jQuery("#"+firstName+"").val();
     4         jQuery("#"+secondName+"").html('<option value="-99" selected="selected">请选择</option>');
     5         if(thirdName){
     6             jQuery("#"+thirdName+"").html('<option value="-99" selected="selected">请选择</option>');
     7         }
     8         if(bigAreaValue!=-99){
     9             selectOption(secondName,bigAreaValue);  //当前选项框选择完毕给相邻下拉框赋值
    10         }else{
    11             $('#'+thirdName).selectpicker('refresh');
    12         }
    13     }
     1 //给option下拉框赋值
     2     function selectOption(idname,bigAreaId){
     3         $.post('/dcenter/society/bigcategory',{id:bigAreaId}, function(result){
     4             if(result.length>0){
     5                 var html='';
     6                 for(var i=0;i<result.length;i++){
     7                     html+="<option value="+result[i].id+" >"+result[i].name+"</option>";
     8                 }
     9                 jQuery("#"+idname+"").append(html);
    10             }
    11             $('#finalbargain').selectpicker('refresh');
    12         });
    13     }

            后台接口的查询方法(方法类似):

     1  /**
     2    * 获取大类数据数据
     3    * @returns {Promise.<void>}
     4    */
     5   async bigcategoryAction(){
     6     let id=this.post().id;
     7     let userInfo = await this.session(this.config('ggsjsc_sessionKey'));
     8     let result = await this.model('a_tagsuser').alias('p1').join('tags p2 ON p1.id=p2.id').where({pid:id,state:1,userid:userInfo.id}).select();
     9     if(result.length < 1){
    10         if(userInfo.mark==3){
    11             result = await this.model('a_tagsuser').alias('p1').join('tags p2 ON p1.id=p2.id').where({pid:id,state:1,userid:userInfo.pid}).select();
    12         }
    13     }
    14     return this.json(result)
    15   }

          1.select的onchange事件:

            2.拼接option下拉框即可。

  • 相关阅读:
    Embedded
    uboot第一阶段详细分析
    nandflash裸机程序分析
    u-boot在nandflash中的前4k内容分析
    使用JLink间接烧写s3c6410 nand_flash的方法
    Emacs
    U-boot 软浮点 错误 解决方法
    linux系统移植流程
    使用JLink烧写bin文件到Mini2440
    uboot-2012.07移植到fl2440开发板(一)
  • 原文地址:https://www.cnblogs.com/zhengyeye/p/8855075.html
Copyright © 2020-2023  润新知