<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        layui自定義插件citySelect實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)選擇

        來(lái)源:懂視網(wǎng) 責(zé)編:小OO 時(shí)間:2020-11-27 21:53:09
        文檔

        layui自定義插件citySelect實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)選擇

        本文實(shí)例為大家分享了layui實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)選擇的具體代碼,供大家參考,具體內(nèi)容如下:省市區(qū)三級(jí)菜單聯(lián)動(dòng)插件。=undefined ){ that.renderData(citySelect.cache[that.key][regionId],dom);}else{ $.ajax({ type: options.method || 'get'.url: options.url.data: $.extend(params.options.where).dataType: 'json'.success: function(res){ if(res[response.statusName]
        推薦度:
        導(dǎo)讀本文實(shí)例為大家分享了layui實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)選擇的具體代碼,供大家參考,具體內(nèi)容如下:省市區(qū)三級(jí)菜單聯(lián)動(dòng)插件。=undefined ){ that.renderData(citySelect.cache[that.key][regionId],dom);}else{ $.ajax({ type: options.method || 'get'.url: options.url.data: $.extend(params.options.where).dataType: 'json'.success: function(res){ if(res[response.statusName]

        本文實(shí)例為大家分享了layui實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)選擇的具體代碼,供大家參考,具體內(nèi)容如下

        省市區(qū)三級(jí)菜單聯(lián)動(dòng)插件

        /**
         * @ name : citySelect 省市區(qū)三級(jí)選擇模塊
         * @ Author: aggerChen
         * @ version: 1.0
         */
        
        layui.define(['layer','form','element','laytpl'], function(exports){
         var $ = layui.$;
         var form = layui.form;
         var laytpl = layui.laytpl;
         var element = layui.emelemt;
         
         //外部接口
         var citySelect = {
         config: {} //全局配置項(xiàng)
         ,cache: {} //數(shù)據(jù)緩存
         ,index: layui.laypage ? (layui.laypage.index + 10000) : 0
         };
         
         //操作當(dāng)前實(shí)例
         var thisSelect = function(){
         var that = this,
         options = that.config,
         id = options.id;
         id && (thisSelect.config[id] = options);
         
         return {
         reload: function(options){
         that.reload.call(that, options);
         },
         config: options
         }
         };
         
         //字符常量
         var MOD_NAME = 'citySelect';
         
         //主模板
         var TPL_MAIN = ['<div class="layui-form-item" >',
         '<label class="layui-form-label">{{ d.data.lableName }}</label>',
         '<div class="layui-input-inline" style="width:160px">',
         '<select name="{{ d.data.filed.provinceName }}" class="{{ d.data.id }}_selectCity" id="citySelect_{{ d.data.filed.provinceName }}{{ d.index }}" lay-filter="province{{ d.index }}" {{#if(d.data.search){ }} lay-search {{# } }} {{#if(d.data.required){ }} lay-verify="required" {{# } }} {{#if(d.data.disabled){ }} disabled {{# } }} >',
         '<option value="000000">-- 全部 --</option>',
         '</select>',
         '</div>',
         '<div class="layui-input-inline" style="width:161px">',
         '<select name="{{ d.data.filed.cityName }}" class="{{ d.data.id }}_selectCity" id="citySelect_{{ d.data.filed.cityName }}{{ d.index }}" lay-filter="city{{ d.index }}" {{#if(d.data.search){ }} lay-search {{# } }} {{#if(d.data.required){ }} lay-verify="required" {{# } }} {{#if(d.data.disabled){ }} disabled {{# } }} >',
         '<option value="">-- 全部 --</option>',
         '</select>',
         '</div>',
         '{{# if(d.data.filed.area){ }}',
         '<div class="layui-input-inline" style="width:161px">',
         '<select name="{{ d.data.filed.areaName }}" class="{{ d.data.id }}_selectCity" id="citySelect_{{ d.data.filed.areaName }}{{ d.index }}" lay-filter="area{{ d.index }}" {{#if(d.data.search){ }} lay-search {{# } }} {{#if(d.data.required){ }} lay-verify="required" {{# } }} {{#if(d.data.disabled){ }} disabled {{# } }} >',
         '<option value="">-- 全部 --</option>',
         '</select>',
         '</div>',
         '{{# } }}',
         
         '{{# if(d.data.msg){ }}',
         '<div class="layui-form-mid layui-word-aux">{{ d.data.msg }}</div>',
         '{{# } }}',
         '</div>'
         ].join("");
         //選項(xiàng)模板
         var TPL_OPTION = [
         '<option value="">-- 全部 --</option>',
         '{{# layui.each(d.data,function(index,item){ }}',
         '<option class="ajaxOption" value="{{ item[d.options.filed.regionId] }}" {{#if(d.options.selectedArr.length>0 && ($.inArray(item[d.options.filed.regionId], d.options.selectedArr)!=-1)){ }} selected {{# } }} >{{ item[d.options.filed.regionName] }}</option>',
         '{{# }) }}'
         ].join("");
         
         
         //構(gòu)造器
         var Class = function(options){
         var that = this;
         that.index = ++citySelect.index;
         that.config = $.extend(true,{}, that.config, citySelect.config, options);
         that.render();
         };
         
         //核心入口
         citySelect.render = function(options){
         var inst = new Class(options);
         return thisSelect.call(inst);
         };
         //獲取選中值
         citySelect.values = function(id){
         return citySelect.cache[id]["values"]; //返回緩存中的選中值
         };
         //設(shè)置禁用/啟用
         citySelect.disabled = function(id,flag){
         $("."+id+"_selectCity").attr("disabled",flag);
         };
         //重載
         thisSelect.config = {};
         citySelect.reload = function(id,options){
         var config = thisSelect.config[id];
         if(!config) return hint.error('The ID option was not found in the citySelect instance');
         return citySelect.render($.extend(true, {}, config, options));
         };
         
         //默認(rèn)配置
         Class.prototype.config = {
         lableName : "行政區(qū)域",
         required : false, //是否必選
         search : true, //是否搜索
         msg:null, //默認(rèn)附加信息
         selectedArr : [], //默認(rèn)選中數(shù)組
         disabled:false, //禁用 默認(rèn)不禁用
         filed:{
         area:true, //默認(rèn)啟用區(qū)
         regionId:'regionId', //默認(rèn)字段id名
         regionName:'regionName',//默認(rèn)字段name名
         provinceName: "province", //默認(rèn)省份名稱
         cityName : "city", //默認(rèn)城市名稱
         areaName : "area", //默認(rèn)區(qū)縣名稱
         },
         
         };
         
         //加載容器
         Class.prototype.render = function(){
         var that = this;
         var options = that.config; 
         options.elem = $(options.elem);
         var othis = options.elem; 
         if(!options.elem[0]) return that; //如果元素不存在
         
         //請(qǐng)求參數(shù)的自定義格式
         options.request = $.extend({
         //pageName: 'page',
         //limitName: 'limit'
         }, options.request);
         
         //響應(yīng)數(shù)據(jù)的自定義格式
         options.response = $.extend({
         statusName: 'code',
         statusCode: 0,
         msgName: 'msg',
         dataName: 'data',
         }, options.response);
         
         //主容器
         var reElem = that.elem = $(laytpl(TPL_MAIN).render({
         //VIEW_CLASS: ELEM_VIEW,
         data: options,
         index: that.index //索引
         }));
         othis.html(reElem); //生成主元素
         that.pullData(); //渲染初始
         that.formFilter(); //監(jiān)聽(tīng)選擇
         
         };
         
         //監(jiān)聽(tīng)表單
         Class.prototype.formFilter = function(){
         var that = this;
         var options = that.config;
         that.key = options.id || options.index;
         
         //監(jiān)聽(tīng)省
         form.on('select(province'+that.index+')', function(data){
         var cityDom = $("#citySelect_"+ options.filed.cityName + that.index); //市
         var areaDom = $("#citySelect_"+ options.filed.areaName + that.index); //區(qū)
         that.chearDom(cityDom); //清理市
         that.chearDom(areaDom); //清理區(qū)
         citySelect.cache[that.key]["values"][0] = data.value; //存入緩存
         citySelect.cache[that.key]["values"][1] = ""; //清理市級(jí)緩存
         citySelect.cache[that.key]["values"][2] = ""; //清理區(qū)級(jí)緩存
         if(data.value!=""){
         if(options.data){
         that.localData(cityDom, data.value); //本地渲染市級(jí) 
         }else{
         that.ajaxData(cityDom,data.value); //ajax渲染市
         }
         }
         }); 
         //監(jiān)聽(tīng)市
         form.on('select(city'+that.index+')', function(data){
         var areaDom = $("#citySelect_"+ options.filed.areaName + that.index); //區(qū)
         that.chearDom(areaDom); //清理區(qū)
         citySelect.cache[that.key]["values"][1] = data.value;
         citySelect.cache[that.key]["values"][2] = "";
         if(data.value!=""){
         if(options.data){
         that.localData(areaDom, data.value); //本地渲染市級(jí) 
         }else{
         that.ajaxData(areaDom,data.value); //加載區(qū)
         }
         }
         }); 
         //監(jiān)聽(tīng)區(qū)
         form.on('select(area'+that.index+')', function(data){
         citySelect.cache[that.key]["values"][2] = data.value;
         console.log("選擇區(qū)"); //得到select原始DOM對(duì)象
         }); 
         
         };
         
         //渲染數(shù)據(jù)
         Class.prototype.pullData = function(){
         var that = this;
         var options = that.config;
         var dom = $("#citySelect_"+ options.filed.provinceName + that.index); //默認(rèn)先渲染省
         that.key = options.id || options.index;
         citySelect.cache[that.key] = {values:["","",""]}; //記錄values緩存標(biāo)記
         
         if(options.data){ //data存在
         that.localData(dom,"000000");
         }else if(options.url){ //url存在
         that.ajaxData(dom);
         }
         
         };
         
         //data渲染數(shù)據(jù)
         Class.prototype.localData = function(dom,regionId){ 
         var that = this;
         var options = that.config;
         var regs = /^\d{2}0000$/; //驗(yàn)證省id 
         var regc = /^\d{4}00$/; //驗(yàn)證市ID
         if(regionId=="000000"){
         //渲染省級(jí)
         that.renderData(options.data,dom);
         }else if(regs.test(regionId)){
         //渲染市級(jí)
         $.each(options.data,function(index,item){
         if(regionId==item[options.filed.regionId]){
         that.renderData(item.children,dom);
         }
         });
         }else if(regc.test(regionId)){
         //渲染區(qū)級(jí)
         var sId = regionId.substr(0, 2)+"0000"; //獲取省級(jí)Id
         $.each(options.data,function(index,item){
         if(sId==item[options.filed.regionId]){
         $.each(item.children,function(i,it){
         if(regionId==it[options.filed.regionId]){
         that.renderData(it.children,dom);
         }
         });
         }
         });
         }
         }
         
         
         //ajax獲取數(shù)據(jù)
         Class.prototype.ajaxData = function(dom,regionId){
         var that = this;
         var options = that.config;
         var response = options.response;
         var params = {};
         params[options.filed.regionId] = regionId==undefined?"000000":regionId;
         
         //先查看緩存有沒(méi)有
         if(citySelect.cache[that.key][regionId]!=undefined ){
         that.renderData(citySelect.cache[that.key][regionId],dom);
         }else{
         $.ajax({
         type: options.method || 'get',
         url: options.url,
         data: $.extend(params, options.where),
         dataType: 'json',
         success: function(res){
         if(res[response.statusName] != response.statusCode){
         that.renderForm();
         typeof options.error === 'function' && options.error(res);
         return ;
         }
         var data = res[options.response.dataName] || [];
         that.renderData(data,dom);
         if(data.length>0){
         citySelect.cache[that.key][regionId] = data; //將已經(jīng)獲取的數(shù)據(jù)保存緩存
         }
         options.time = (new Date().getTime() - that.startTime) + ' ms'; //耗時(shí)(接口請(qǐng)求+視圖渲染)
         typeof options.done === 'function' && options.done(res);
         }
         ,error: function(e, m){
         that.renderData('<option value="">數(shù)據(jù)接口請(qǐng)求異常</option>',dom);
         typeof options.error === 'function' && options.error(res, e,m);
         }
         });
         }
         
         };
         
         //數(shù)據(jù)渲染
         Class.prototype.renderData = function(data,dom){
         var that = this,
         options = that.config;
         var selectedArr = options.selectedArr; //獲取默認(rèn)選中數(shù)組
         
         if(typeof data === 'string'){
         $(dom).html(data);
         }else{
         //渲染選擇項(xiàng)
         $(dom).html( $(laytpl(TPL_OPTION).render({
         data: data,
         options:options,
         index: that.index //索引
         })));
         that.renderForm('select');
         }
         //設(shè)置默認(rèn)選中
         var v = $(dom).val();
         if(v!=""&&selectedArr.length>0){
         for (var i = 0; i < selectedArr.length; i++) {
         if(v == selectedArr[i] && i<3){
         citySelect.cache[that.key]["values"][i] = v; //保存到選中緩存
         that.config.selectedArr[i] = ""; //清除默認(rèn)選擇數(shù)組
         if(i==0){
         var dom = $("#citySelect_"+ options.filed.cityName + that.index);
         if(options.data){
         that.localData(dom, v); //本地渲染市級(jí) 
         }else{
         that.ajaxData(dom, v); //ajax渲染市級(jí)
         }
         }else if(i==1&&options.filed.area){
         var dom = $("#citySelect_"+ options.filed.areaName + that.index);
         if(options.data){
         that.localData(dom, v); //本地渲染區(qū)級(jí) 
         }else{
         that.ajaxData(dom, v); //ajax渲染區(qū)級(jí)
         }
         }
         }
         }
         }
         };
        
         
         //渲染表單
         Class.prototype.renderForm = function(type){
         form.render(type);
         };
         
         //清空select
         Class.prototype.chearDom = function(dom){
         var that = this;
         $(dom).html('');
         $(dom).append('<option value="">-- 全部 --</option>');
         that.renderForm('select');
         };
         
         //暴露模塊
         exports(MOD_NAME, citySelect);
        });

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        layui自定義插件citySelect實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)選擇

        本文實(shí)例為大家分享了layui實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)選擇的具體代碼,供大家參考,具體內(nèi)容如下:省市區(qū)三級(jí)菜單聯(lián)動(dòng)插件。=undefined ){ that.renderData(citySelect.cache[that.key][regionId],dom);}else{ $.ajax({ type: options.method || 'get'.url: options.url.data: $.extend(params.options.where).dataType: 'json'.success: function(res){ if(res[response.statusName]
        推薦度:
        標(biāo)簽: 插件 layer 省市區(qū)
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲不卡视频在线观看| 亚洲色中文字幕无码AV| 亚洲videosbestsex日本| 亚洲视频免费一区| 亚洲精品资源在线| 91免费在线播放| 国产日韩AV免费无码一区二区三区 | 亚洲av手机在线观看| 国产亚洲精品看片在线观看| 国产精品内射视频免费| 亚洲中文字幕无码久久精品1| 99re6在线精品免费观看| 日韩免费福利视频| 未满十八私人高清免费影院| 久久久久久精品成人免费图片| 久久久久久亚洲Av无码精品专口| 亚洲av片在线观看| 久久精品一区二区免费看| 亚洲日韩区在线电影| 成年网在线观看免费观看网址| 亚洲午夜爱爱香蕉片| 无码精品一区二区三区免费视频| 亚洲fuli在线观看| 免费欧洲毛片A级视频无风险| 国产免费久久精品丫丫| 亚洲今日精彩视频| 成年女人毛片免费观看97| 亚洲第一永久在线观看| 性一交一乱一视频免费看| 四虎国产精品成人免费久久| 亚洲精品无码久久久影院相关影片| a级毛片毛片免费观看久潮喷| 亚洲制服丝袜精品久久| 国产成人aaa在线视频免费观看| 两个人看www免费视频| 亚洲啪啪免费视频| 亚洲精品无码久久久| 无码AV片在线观看免费| 久久人午夜亚洲精品无码区| 亚洲av综合色区| 午夜不卡久久精品无码免费|