成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? 基于jQuery下拉選擇框插件支持單選多選功能代碼
全站頭部文字 我要出現在這里
基于jQuery下拉選擇框插件支持單選多選功能代碼 675 2024-02-29   

由于最近項目的需求,需要做一個下拉選擇框的插件,支持單選顯示表單數據,多選顯示表格數據,該插件主要運用了jQuery與jqgrid以及easyui。

下面給大家展示下效果圖,如果大家感覺還不錯,請參考實現代碼:

查看圖片

查看圖片

多選:呈現列表

查看圖片

查看圖片

具體代碼如下所示:

/** 
 *下拉框插件-chooseList 
 *調用插件的方式以及格式: 
 * 1.首先你需要創建一個div面板,給div定義ID 
 * 2.在你所需要的地方調用插件: 
 * 參數說明: 
 * $("#divID").chooseList({ 
 * query_url :加載下拉框數據的URL,指定你所寫編寫的controller地址,如果URL為空則使用插件提供的默認URL 
 * divID:divID 
 * sidx:排序字段,默認罪犯編號 
 * sord:排序類型,默認desc 
 * postData: postData: {filters:JSON.stringify(filters)} 自定義查詢條件 
 * filters的格式如下 
 *  var rules = []; 
   rules.push({"field":"gydwName","op":"cn","data":"xxxx"}); 
   var filters = {"groupOp":"AND","rules":rules}; 
   isMultiselect:是否多選,默認單選false 
 *   
 *  }) 
 * 
 * 
 */ 
(function ($) { 
  $.fn.extend({ 
    chooseList: function (options) { 
      //產生隨機數 
      var random =Math.floor(Math.random()*100000+1); 
      /** 
      * 自定義參數,需要使用其中的屬性直接:customparams.屬性名 
      */ 
      var customparams = { 
        resultObj : {},//存儲單選選擇的后的數據,返回給外界調用者使用 
        resultListObj : new map(),//存儲多選選擇的后的數據,返回給外界調用者使用 
        currentTag : this,//當前標簽對象 
        formID: "form_"+random, 
        chooseID : "sel"+"_"+random,//下拉選擇框的ID 
        gridID :"grid"+"_"+random,//dataGrid的ID 
        pager : "pager"+"_"+random,//分頁ID 
        countRow :0//計數行號,默認為0 
      }; 
      /** 
      * 參數和默認值 
      */ 
      var defaults = { 
        _search:"false", 
        //如果未傳入url,則使用默認的url進行查詢 
        query_url :contextPath + "/chooseCriminal", 
        sidx:"bh",//排序字段,默認根據罪犯的編號bh 
        sord: "desc",//排序類型:升序,降序 ,默認降序 
        isMultiselect:false,//是否多選,默認單選 
      }; 
      /** 
      * 裝載默然參數和傳人的參數對象 
      */ 
      var options = $.extend(defaults, options);  
      /** 
      * 解析載入參數 
      * @param query_url 請求的地址 
      * @param flag 標識是第一次加載表格還是模糊查詢加載表格數據 
      */ 
      var bindParams = function(query_url){ 
        var params="";//存儲解析的參數 
        for(var attr in options){ 
          var key = attr; 
          var value = options[attr]; 
          if(value != "" && !(value instanceof Object)&key!="query_url"&&key!="divID"&&key!=false){ 
            params+=key+"="+value+"&" 
          }else if(value instanceof Object){ 
            params+=$.param(value)+"&"  
          }else if(key=="_search"&&value==false){ 
            params+=key+"=false&"; 
          } 
        } 
        var finalParams =query_url+"?"+params.substring(0,params.length-1); 
        return finalParams; 
       }; 
     /** 
      * 綁定選擇罪犯combogrid 
      */ 
     var renderComboGrid = function(){ 
          $("#"+customparams.chooseID).combogrid({ 
          panelWidth: 500, 
          idField: 'bh',//id 
          textField: 'xm',//input顯示值 
          pagination : true,//是否分頁  
          pageSize: 10,//每頁顯示的記錄條數,默認為10   
          rownumbers:true,//序號 
          url: bindParams(options.query_url), 
          method: 'get', 
          fitColumns: true, 
          columns: [[ 
            {field:'xm',title:'姓名',width:80}, 
            {field:'bh',title:'編號',width:120}, 
            {field:'gydwName',title:'單位',width:80}, 
          ]], 
          keyHandler:{ 
             query:function(keyword){//動態搜索 
               var value =keyword; 
               //裝載動態輸入參數 
               if(options.postData!=null&&options.postData!=undefined){ 
                 var oldRules = JSON.parse(options.postData.filters); 
                 var newRules =[ 
                        {"field":"xm","op":"cn","data":value}, 
                          (oldRules.rules)[0] 
                        ]; 
                  var filters = {"groupOp":"AND","rules":newRules}; 
                  options = $.extend(defaults, {postData: {filters:JSON.stringify(filters)}});  
               }else{ 
                  var newRules =[ 
                       {"field":"xm","op":"cn","data":value} 
                      ];  
                  var filters = {"groupOp":"AND","rules":newRules}; 
                  options = $.extend(defaults, {queryData: {filters:JSON.stringify(filters)}});  
               } 
               //將輸入的值設置至輸入框中 
               $("#"+customparams.chooseID).combogrid('setValue', value); 
               //重新請求后臺加載表格 
               $("#"+customparams.chooseID).combogrid("grid").datagrid({url:bindParams(options.query_url)}); 
                        } 
                }, 
          onSelect:function(){//選中事件  
                var bh= $("#"+customparams.chooseID).combogrid('grid').datagrid('getSelected').bh;//獲取選中行數據的編號   
                //根據罪犯編號獲取罪犯的詳細信息ajax 
                $.ajax({ 
                  type : 'POST', 
                  url : contextPath + "/chooseList/query", 
                  data :{bh:bh}, 
                  success : function(data) { 
                    //填充表單 
                    PlatformUI.populateForm(customparams.formID, data); 
                    //轉換對象中包含時間類型的數值 
                    convertDateObject(data); 
                    //判斷當前用戶引用的是單選,還是多選 
                    if(options.isMultiselect==false){//單選 
                      $.extend(customparams.resultObj, data); 
                    }else{//多選 
                       addRowData(data); 
                       $.extend(customparams.resultListObj, data);  
                    } 
                    }  
                  }); 
              }  
            }); 
        }; 
     /** 
      * 添加表格的行信息 
      * @param data 數據集 
      */ 
     var addRowData = function(data){ 
        //判斷當前對象是否已經存在resultesObj中,如果存在則不保存,反之則保存 
        if(!(customparams.resultListObj.containsKey(data.bh))){ 
          customparams.resultListObj.put(data.bh,data); 
          //獲取行數據 
          var rowData = {xm:data.xm, bh:data.bh, gydwName:data.gydwName}; 
          customparams.countRow = customparams.countRow+1; 
          //添加行 
           $("#"+customparams.gridID).addRowData(customparams.countRow, rowData); 
           var totalRecord = customparams.resultListObj.size();//總條數 
        }else{ 
          //提示 
          toastr.warning("數據已被選擇!"); 
          return; 
        } 
     }; 
     /** 
      * 刪除行指定列 
      * @param bh 編號 
      * @param rowId 行ID 
     */ 
     var deleteRow = function(bh,rowId){ 
        //刪除集合中的元素 
        customparams.resultListObj.remove(bh);  
        //刪除表格中的行 
        $("#"+customparams.gridID).delRowData(rowId); 
        //更改行號 
        customparams.countRow = customparams.countRow - 1;  
             }; 
       /** 
       * 轉換對象時間戳類型的為yyyy-mm-dd字符串 
       * @parma data 數據 
       */ 
      var convertDateObject = function(data) { 
         if(data.rjrq!=null&&data.rjrq!=undefined){ 
           $("#rjrq").val(DateToString(new Date(data.rjrq))); 
         } 
         if(data.csrq!=null&&data.csrq!=undefined){ 
            $("#csrq").val(DateToString(new Date(data.csrq)));  
         } 
         if(data.dqxqqr!=null&&data.dqxqqr!=undefined){ 
           $("#dqxqqr").val(DateToString(new Date(data.dqxqqr))); 
         } 
         if(data.dqxqzr!=null&&data.dqxqzr!=undefined){ 
            $("#dqxqzr").val(DateToString(new Date(data.dqxqzr))); 
         } 
      }; 
      /** 
       * 日期類型轉換成字符串型格式yyyy-MM-dd 
       * @param DateIn 轉換對象 
       *       
       */ 
      var DateToString = function(DateIn) { 
            return DateIn.getFullYear() 
                + '-' 
                + (DateIn.getMonth() + 1 >= 10 ? DateIn 
                    .getMonth() + 1 : '0' 
                    + (DateIn.getMonth() + 1)) 
                + '-' 
                + (DateIn.getDate() >= 10 ? DateIn.getDate() 
                    : '0' + (DateIn.getDate())); 
      }; 
       /** 
       * 自定義map 
       */ 
       function map () { 
        this.elements = new Array(); 
         //得到map的大小 
          this.size = function() { 
            return this.elements.length; 
          } 
         //判斷是否為空 
          this.isEmpty = function() { 
            return (this.elements.length < 1); 
          } 
          //清空 
          this.clear = function() { 
            this.elements = new Array(); 
          } 
          //放進map一個對象 
          this.put = function(_key, _value) { 
            this.elements.push( { 
              key : _key, 
              value : _value 
            }); 
          } 
         //根據鍵去除一個對象 
          this.remove = function(_key) { 
            var bln = false; 
            try { 
              for (i = 0; i < this.elements.length; i++) { 
                if (this.elements[i].key == _key && typeof this.elements[i].key == typeof _key) { 
                  this.elements.splice(i, 1); 
                  return true; 
                } 
              } 
            } catch (e) { 
              bln = false; 
            } 
            return bln; 
          } 
         //根據鍵得到一個對象 
          this.get = function(_key) { 
            try { 
              for (i = 0; i < this.elements.length; i++) { 
                if (this.elements[i].key == _key && typeof this.elements[i].key == typeof _key) { 
                  return this.elements[i].value; 
                } 
              } 
            } catch (e) { 
              return null; 
            } 
          } 
         //返回指定索引的一個對象 
          this.element = function(_index) { 
            if (_index < 0 || _index >= this.elements.length) { 
              return null; 
            } 
            return this.elements[_index]; 
          } 
         //是否包含鍵 
          this.containsKey = function(_key) { 
            var bln = false; 
            try { 
              for (i = 0; i < this.elements.length; i++) { 
                if (this.elements[i].key == _key && typeof this.elements[i].key == typeof _key) { 
                  bln = true; 
                } 
              } 
            } catch (e) { 
              bln = false; 
            } 
            return bln; 
          } 
         //是否包含值 
          this.containsValue = function(_value) { 
            var bln = false; 
            try { 
              for (i = 0; i < this.elements.length; i++) { 
                if (this.elements[i].value == _value && typeof this.elements[i].value == typeof _value) { 
                  bln = true; 
                } 
              } 
            } catch (e) { 
              bln = false; 
            } 
            return bln; 
          } 
         //得到所有的值 
          this.values = function() { 
            var arr = new Array(); 
            for (i = 0; i < this.elements.length; i++) { 
              arr.push(this.elements[i].value); 
            } 
            return arr; 
          } 
         //得到所有的鍵 
          this.keys = function() { 
            var arr = new Array(); 
            for (i = 0; i < this.elements.length; i++) { 
              arr.push(this.elements[i].key); 
            } 
            return arr; 
          } 
      }; 
     /** 
      * 渲染panel視圖 
      */ 
      var renderPanelView = function(){ 
       var html = ""; 
      html+="請選擇:<input id='"+customparams.chooseID+"' style='width:200px'/>"; 
      html+="<form id='"+customparams.formID+"'>"; 
      html+="<table>"; 
      html+="<tr>"; 
      html+="<th>姓名:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px ' readonly='true' type='text' id='xm' name='xm' /></td>"; 
      html+="<th>編號:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true' type='text' id='bh' name='bh' /></td>"; 
      html+="<th>單位:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true' type='text' id='gydwName' name='gydwName' /></td>"; 
      html+="<th>入監時間:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true' type='text' id='rjrq' name='rjrq' /></td>"; 
      html+="<td rowspan='7' style='text-align: center'><img src='http://www.gimoo.net/t/1902/5c613469ccdd5.html' width='140' height='200' alt='' /></td>"; 
      html+="</tr>"; 
      html+="<tr>"; 
      html+="<th>出生日期:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='csrq' name='csrq' /></td>"; 
      html+="<th>身份證號:</th>" 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='sfzh' name='sfzh' /></td>"; 
      html+="<th>原判刑期:</th>" 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='xq' name='xq' /></td>"; 
      html+="<th>當前刑期:</th>" 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='dqxq' name='dqxq' /></td>"; 
      html+="</tr>"; 
      html+="<tr>"; 
      html+="<th>刑期起日:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='dqxqqr' name='dqxqqr' /></td>"; 
      html+="<th>刑期止日:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='dqxqzr' name='dqxqzr' /></td>"; 
      html+="<th>處遇等級:</th>"; 
      html+=" <td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='cydjname' name='cydjname' /></td>"; 
      html+="<th>分押類型:</th>" 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='fylxName' name='fylxName' /></td>"; 
      html+="</tr>"; 
      html+="<tr>"; 
      html+="<th>余刑:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='yx' name='yx' /></td>"; 
      html+="<th>軍警經歷</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='jjjlName' name='jjjlName' /></td>"; 
      html+="<th>特管類別:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='tglb' name='tglb' /></td>"; 
      html+=" <th>累慣犯:</th>" 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='lgfEnum' name='lgfEnum' /></td>" 
      html+="</tr>"; 
      html+="<tr>"; 
      html+="<th>是否老犯:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='isSflf' name='isSflf' /></td>"; 
      html+="<th>是否病犯:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='issfbf' name='issfbf' /></td>"; 
      html+="<th>是否殘犯:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='issfcf' name='issfcf' /></td>"; 
      html+="<th>是否危險犯:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='issfwxf' name='issfwxf' /></td>"; 
      html+="</tr>"; 
      html+="<tr>"; 
      html+=" <th>職務犯:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='isZwf' name='isZwf' /></td>"; 
      html+="<th>家庭住址:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='familyAddressDetail' name='familyAddressDetail' /></td>"; 
      html+="<th>罪名:</th>"; 
      html+="<td><input  style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='accusationId' name='accusationId' /></td>"; 
      html+=" </tr>"; 
      html+=" </table>"; 
      html+="</form>"; 
      $(customparams.currentTag).append(html); 
       renderComboGrid(); 
      }; 
      /*******************渲染dtaGrid部分*********************/ 
      /** 
      * 渲染dataGrid表格 
      */ 
      var renderGrid = function(){ 
        var gridhtml =""; 
        gridhtml+="請選擇罪犯:<input id='"+customparams.chooseID+"' style='width:200px'/>"; 
        gridhtml+="<div>"; 
        gridhtml+="<table id='"+customparams.gridID+"'></table> "; 
        gridhtml+="<div id='"+customparams.pager+"'></div>"; 
        gridhtml+="</div>";  
        $(customparams.currentTag).append(gridhtml); 
        renderComboGrid(); 
        initDataGrid(); 
      }; 
      /** 
      * 加載dataGrid表格數據 
      */ 
      var initDataGrid =function (){ 
        $("#"+customparams.gridID).jqGrid({ 
          datatype : 'local', 
          autowidth: true, 
          height:300, 
          colNames: ["姓名", "編號", "單位","操作"], 
          colModel: [ 
            { name: "xm", index:"xm",align:"center",width:50,sortable: true}, 
            { name: "bh", index:"bh", align:"center",width:50, sortable: true}, 
            { name: "gydwName", index:"gydwName", align:"center",width:50,sortable: true}, 
            { name: "customColumn",formatter:function(cellvalue, options, rowObject){ 
              var obj = "{bh:" + """ + rowObject.bh + """ + ",rowId:" + """ + options.rowId + """ + "}"; 
              var columnTemplate = "<span class='btn_orange innerDelBtn' name='"+ obj +"' >刪除</span>" 
              return columnTemplate;  
            }, align:"center",width:50,search:false,sortable: false} 
               ], 
          sortname: "bh", 
          sortorder: "desc", 
          rownumbers:true,//添加左側行號 
          viewrecords: true, 
          gridview: true, 
          autoencode: true, 
          caption: "罪犯信息列表", 
          gridComplete: function(){ 
            binCompleteEvent(); 
          } 
        }); 
      }; 
      /** 
      * 給表格綁定加載完的事件 
      */ 
      var binCompleteEvent =function(){ 
       //給操作欄綁定點擊事件 
        $(".innerDelBtn").click(function(e){ 
          var obj = eval("(" + $(e.target).attr("name") + ")"); 
          deleteRow(obj.bh, obj.rowId); 
        }); 
         //選中行鼠標變為手型 
         var ids=$("#"+customparams.gridID).jqGrid('getDataIDs'); 
          for(var i = 0; i < ids.length ; i ++){ 
            var id = ids[i]; 
            $("#"+id).attr("style","cursor:pointer"); 
           } 
      } 
      /*******************渲染dtaGrid部分結束*********************/ 
      /** 
      * 根據類型渲染視圖 
      */ 
      var renderView = function(){ 
       //根據isMultiselect判斷那種渲染視圖 
       options.isMultiselect==true?renderGrid():renderPanelView(); 
      }; 
      /*** 
       * 初始化入口 
       */ 
      renderView(); 
     //使用三元表達式判斷返回的應是單個對象還是多個對象 
     return options.isMultiselect==false?customparams.resultObj:customparams.resultListObj; 
    } 
    }); 
  })(jQuery); 

以上所述是小編給大家介紹的基于jQuery下拉選擇框插件支持單選多選功能代碼的相關內容,希望對大家有所幫助!



主站蜘蛛池模板: 怀孕被打肚子踩肚子踹肚子压肚子视频| 刑事侦缉档案2剧情介绍| 铁血使命演员表全部| land of the lost| 爱情天梯| 保证书怎么写才有法律效力| 有档期是有空还是没空| 张梓琳个人简历| 团结就是力量歌词完整| 美女上厕所| 不要好舒服| 扭曲的欲望| 年轻阿姨的性教育| 嫩模被xxxx视频在线观看| 87版红楼梦4k修复版| 蓝色男孩| 阿尔罕布拉宫的回忆吉他谱| 少妇灌肠调教日本视频| 网页抖音| 张俪eyely| 梅兰尼·格里菲斯| 演觉法师| 暴走财神1| 全国精神病查询系统官网| 汤姆·威尔金森| 下一个奇迹| 漂亮孕妇独自在家肚子疼叫个不停| xxxxxxxxxxxxx| 性丑闻| 托比·斯蒂芬斯| 诡娃| 红灯停绿灯行电影观看| 香港卫视中文台| 韩国电影朋友的妻| 尹馨演过的三部电影| 本溪电视台| 艺术影院| junk boy| 闪电小子| 天气预报有雨| 青春正步走 电视剧|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103