ligerui多選動態下拉框


今天下午要求做一個支持多選的,並且插件用ligerui的,當時有點小懵了,因為沒用過ligerui啊!而且按照API的介紹,我做得也很好啊,可是為什么就是顯示不出來?據說有位小神比較厲害,請教來之,兩個點過去了,依然無果...................

好吧,切入正題,首先要做一個ligerui的下拉框,必須在頁面加載的時候就初始化一個下拉框來,要不你叫你媽來都不好使!(好吧,是我不會看API!)

先說說我現在的需求,我需要做一個類似於二級聯動,有兩個下拉框,一個是房屋類型,一個是房屋格局,當我選擇房屋類型的時候,出來房屋格式,然后然后...我就在房屋類型里做了一個onchange事件......

這個是html頁面代碼:

<input type="text" id="house_type" maxlength="20" onchange="show_houseType_child(this.value);"/>  <!--房屋類型下拉框-->
<input type="text" id="housing_pattern"  maxlength="20"/>   <!--房屋格局-->


js代碼,onchang事件:

//頁面加載的時候必須給下拉框初始化為一個下拉框   
 $("#housing_pattern").ligerComboBox({
     data: [{value_meaning:"--請選擇--",mcs_sys_dict_data_id:"-1"}],
     textField: 'value_meaning',  //頁面顯示的文本信息
     valueField:'mcs_sys_dict_data_id',  //數據的id
     isMultiSelect: true,  //是否支持多選
     isShowCheckBox: true ,  //是否顯示復選框
     valueFieldID: 'value_mean'//value_mean只是一個名稱,可以隨便取名
  });



//點擊房產類型出現子菜單,沒有寫在頁面加載中 function show_houseType_child(json){ if(combox.getValue()!='-1'){ var mcs_sys_dict_id_id=combox.getValue(); $.ajax({ type: "get", url: "/MCS/sysmanage/mcssysdictdatabydictidempty.do", data: "mcs_sys_dict_id="+mcs_sys_dict_id_id+"&isEmpty=true",  //ajax向后台發送數據 success: function(data){ liger.get("housing_pattern").setData(data);  //返回data數據,並且賦值給文本框id為:housing_pattern } }); } }

好了,基本就成型了,是不是有人懷疑,多選是出來了,那單選房屋類型呢?其實這個公司已經封裝好了,這個我只能是粘出來,或許會報錯,欲哭無淚啊!

js房屋類型單選:

     //房產類型方法
    function init_cre_loan_type(json){
        var cre_loan_type_params ={
                dest_url:'/sysmanage/mcssysdictdatabydictidempty.do?isEmpty=true&mcs_sys_dict_id=56 ',
                t_col_name:'house_type',
                valueField:'mcs_sys_dict_data_id',   //下拉框value對應的值,默認為id
                textField:'value_meaning',    //下拉框text對應的值,默認為text
                def_val:'first'
                };
        combox = global_ligerui_extend.initCombox("house_type",null,cre_loan_type_params);
        if(json){
            //把值裝載設定
            global_ligerui_extend.syncRequestInitComboxData(json,"house_type");
            //讓其不可編輯
            global_ligerui_extend.disabledCombox("house_type");
        }else{            
            global_ligerui_extend.initComboxDefVal("house_type");
        }
    }

公司封裝好了的js:
你完全也可以創建一個js文件名稱叫:global.ligerui.extend.js,粘貼相信你百分百好使哈!

var global_ligerui_extend = {

      /**
       * 初始化樹形下拉框,如果下拉框沒有上級聯動,將下拉框的值進行初始化
       * @param inputObjName 下拉框對應的input名稱
       * @param onSelectedFunc 值被選擇的事件
       * @param params json對象,可以包含如下的值:
       * 1 valueField   下拉框value對應的值,默認為id
       * 2 textField    下拉框text對應的值,默認為text
       * 3 dest_url     下拉框data對應的url
       * 4 t_col_name   下拉框對應的數據庫表字段名稱
       * 5 p_input_name 上級下拉框對應的文本框名稱,多個使用逗號,分隔
       * 6 c_input_name 下級下拉框對應的文本框名稱,多個使用逗號,分隔
       * * 7 def_val      下拉框的默認值,如果為''或者null,則聯動后值置為空,如果為'first',聯動后置為下拉框的第一個值
       *                其他則直接選擇值
       * @returns
       */
      initTreeCombox:function(inputObjName,onSelectedFunc,params){
          var that = this;
          var manager = $("#"+inputObjName).ligerComboBox({
                width: params.input_width || 135,
                selectBoxWidth: 130,
                selectBoxHeight: 150,
                valueField: params.valueField || 'id',
                   textField: params.textField || 'text',
                valueFieldID: inputObjName+'_hidden',
                dest_url:params.dest_url || '',
                   t_col_name:params.t_col_name || '',
                   p_input_name:params.p_input_name || '',
                   c_input_name:params.c_input_name||'',
                   def_val:params.def_val||'',
                treeLeafOnly: false,
                tree: {
                    data: [],
                    nodeWidth: 133,
                    checkbox: false,
                    parentIcon: null,
                    childIcon: null,
                    onBeforeCancelSelect: function() {
                        return false;
                    }
                },
                onSelected: function(val){
                    var options = this.options;
                    if(options.is_linkage && $.trim(options.c_input_name)!=''){
                        var c_input_name_arr = options.c_input_name.split(',');
                        for(var i=0;i<c_input_name_arr.length;i++){
                            that.asyncRequestInitComboxData(c_input_name_arr[i]);
                        }
                    }
                    if(options.is_linkage && onSelectedFunc){
                        onSelectedFunc.call(this,val);
                    }
                }
            });
          return manager;
      },
      /**
       * 同步獲取后台數據,第一個參數固定,后面的參數為不固定參數,可以為一個或多個
       * param:頁面上各下拉框對應的值,應為后台數據庫查詢獲得,與下拉框的t_col_name相對應
       * inputObjName一個或多個需要設置下拉框數據和值的下拉框對應的文本框ID
       */
      syncRequestInitComboxData:function(param,inputObjNames){
          var n = arguments.length;
          var that = this;
          for (var i = 1; i < n; i++) {
              var inputObjName = arguments[i];
              var comboxManage = $("#"+inputObjName).ligerGetComboBoxManager();
              comboxManage.setLinkage(false);//取消聯動
              var options_1 = comboxManage.options;
              var url = options_1.dest_url;//請求數據URL
              var t_col_name = options_1.t_col_name;//該下拉框對應的數據庫表字段名稱
              var defaultVal;
              if(param == null){
                  defaultVal = options_1.def_val;
              }else{
                  defaultVal = param[t_col_name]; 
              }
              var data = {};
              var p_input_name = options_1.p_input_name;//該下拉框上一級對應的數據庫字段名稱
              if(p_input_name != null && $.trim(p_input_name)!=''){
                  var paramArr = p_input_name.split(',');
                  for(var j=0;j<paramArr.length;j++){
                      var param_name = paramArr[j];
                      var obj = $("#"+param_name).ligerGetComboBoxManager();
                      var options = obj.options;
                      var pn = options.t_col_name;
                      if(param == null){
                          data[pn] = $("#"+param_name+"_hidden").val();
                      }else{
                          data[pn] = param[pn];
                      }
                      
                      
                  }
              }
              $.ajax({
                  type: "GET",
                  url: globalUtil.getTimestampUrl(url),
                  data: data,
                  async: false,
                  dataType: 'json',
                  success: function(json) {
                      that.setComboxData(comboxManage,json,defaultVal);
                      comboxManage.setLinkage(true);//恢復聯動
                  }
              });
          }
      },
      disabledCombox:function(inputObjName){
          var comBoxManager = $("#"+inputObjName).ligerGetComboBoxManager();
          comBoxManager.setDisabled();
      },
      /**
       * 將下拉框的值進行初始化,首先將根級的下拉框重新初始化,根據聯動其他的下拉框進行初始化
       * @param inputObjNames 不定個數參數,根級的下拉框名稱
       */
      initComboxDefVal:function(inputObjNames){
          var n = arguments.length;
          for (var i = 0; i < n; i++) {
              var inputObjName = arguments[i];
              this.asyncRequestInitComboxData(inputObjName);
          }
      },


終於寫完了,不過我運行有點小小的bug,等待我處理完畢后再來完善

我的工作一天又要開始了,fight!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM