最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js select實現(xiàn)省市區(qū)聯(lián)動選擇

 更新時間:2020年04月17日 16:40:01   作者:yilanyoumeng3  
這篇文章主要為大家詳細介紹了js select實現(xiàn)省市區(qū)聯(lián)動選擇效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近整了一一些表單類的移動頁面,遇到了一個省市區(qū)的聯(lián)動選擇,本來想著用公用庫里面的以前pc端的省市區(qū)選擇組件,但是發(fā)現(xiàn)pc端的效果在手機端用效果太不理想,設計沒給出具體的設計效果,只好自己整了select原生的省市區(qū)選擇效果,樣式使用手機自帶的效果,感覺樣式效果湊合還能用,數據還是用的pc的數據,只是把組件的給重寫了一下,代碼效果如下:

var $ = require('jquery'),
 $window = $(window),
 data = require('./data-new'),
 $doc = $(document);

var __DEFAULTS__ = {
 wrap:'',
 itemName: ['省', '市', '區(qū)/縣'],
 items: ['province', 'city', 'area'],
 callback: function(field, index) {} // 點擊切換得時候才會執(zhí)行

};


 function Area(options){
  options = $.extend({}, __DEFAULTS__, options);
  var that = this;
  that.wrapper = $(options.wrap);
  that.selectArr = that.wrapper.data('default')?that.wrapper.data('default').split(','):[110000,110100,110101]; //
  that.items = options.items;
  that.itemName = options.itemName;
  that.callback = options.callback;
  that.setValue();
  that.events();
  that.default = that.wrapper.data('default'); //默認輸出省市區(qū)的id
  that.validinput = $("#default-area");
  var validval = that.default!==undefined?that.default:'';
  that.validinput.val(validval);

 }

Area.prototype = {
 constructor: Area,
 //創(chuàng)建select,輸出相應的數據
 createItems:function(itemname,data,selectId){
  var that = this;
  //如果默認的defalut值沒輸出,則默認的給select添加相應的填寫提示
  var html = '<select name="'+itemname+'">'+(that.default === undefined ?'<option value="'+itemname+'" selected ="selected">'+that.itemName[that.index]+'</option> ' : '');

  for (var k in data) {

   html += '<option value ="'+ data[k].id +'"'+(selectId === data[k].id ? 'selected = "selected"' : '')+'>' + data[k].name + '</option>';

  }
  html += '</select>'; 
  return html;
 },
 //設置初始值
 setValue:function(){
  var that = this,
   html = '';

  $.each(that.selectArr,function(index,k){
   that.index = index;
    html += that.createItems(that.items[index],that.getData(that.items[index],that.selectArr[index-1]),k);

  })
  that.wrapper.append(html)

 },
 //獲取數據
 getData: function(type, pid) {

  if (type === 'province') {
   return data.provinces || []; // 省份信息不需要pid
  }

  if (type === 'city') {
   return data.cities[pid] || [];
  }

  if (type === 'area') {
   return data.areas[pid] || [];
  }
 },
  //獲取select索引值
 getItemIndex:function(type){
  var that = this;
  for(var i= 0,l = that.items.length;i<l;i++){
   if(that.items[i] == type){
    return i;
   }
  }

 },
 //觸發(fā)change時候,select下一位值重新初始化
 setItemVal:function(select){

  var that = this;
  var $this = select,
   previd = $this.val(),
   $type =$this.attr('name'),
   $nxtType = '';

  if($type!='area'){

   $nxtType = that.items[that.getItemIndex($type)+1];

   var data = that.getData($nxtType,previd),
    html = that.createItems($nxtType,data,previd),
    nextSelect = $('select[name="'+$nxtType+'"]');

   if($this.siblings('select[name="'+$nxtType+'"]').length>0){
    nextSelect.remove();
   }
   $this.after(html);
   nextSelect.find('option:first').prop('selected',true);
   $('select[name="'+$nxtType+'"]').trigger('change');
  } else{

   that.validinput.val($this.val()).trigger('validate')
  }
  that.index = that.getItemIndex($type);
  //觸發(fā)change后可以設置回調函數
  if (that.callback) {
   that.callback.call(this, select, that.getItemIndex($type));
  }

 },
 events:function(){
  var that = this;
  //select change事件
  $doc.on('change','.area-container select',function(){
   that.setItemVal($(this));

  })
 }
}

module.exports = Area;

html代碼:

復制代碼 代碼如下:
<input type="hidden" name="defaultArea" value="" id="default-area" >  //必填項,為了添加驗證觸發(fā)驗證用
<div class="area-container" data-default=""></div>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • JS實現(xiàn)的省份級聯(lián)實例代碼

    JS實現(xiàn)的省份級聯(lián)實例代碼

    這篇文章主要介紹了js下省份級聯(lián)效果,需要的朋友可以參考一下
    2013-06-06
  • JavaScript禁止微信瀏覽器下拉回彈效果

    JavaScript禁止微信瀏覽器下拉回彈效果

    這篇文章主要為大家詳細介紹了JavaScript禁止微信瀏覽器下拉回彈效果的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • javascript中parentNode,childNodes,children的應用詳解

    javascript中parentNode,childNodes,children的應用詳解

    本篇文章是對javascript中parentNode,childNodes,children的應用進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • js+h5 canvas實現(xiàn)圖片驗證碼

    js+h5 canvas實現(xiàn)圖片驗證碼

    這篇文章主要為大家詳細介紹了js+h5 canvas實現(xiàn)圖片驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 利用uni-app開發(fā)App的超簡易教程

    利用uni-app開發(fā)App的超簡易教程

    uni-app是一個使用Vue.js開發(fā)所有前端應用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、Web(響應式)、以及各種小程序,下面這篇文章主要給大家介紹了關于如何利用uni-app開發(fā)App的相關資料,需要的朋友可以參考下
    2022-11-11
  • JS版元素周期表實現(xiàn)方法

    JS版元素周期表實現(xiàn)方法

    這篇文章主要介紹了JS版元素周期表實現(xiàn)方法,可實現(xiàn)基于javascript動態(tài)生成元素周期表的功能,點擊元素項可以在下方顯示對應元素的各種常用屬性,需要的朋友可以參考下
    2015-08-08
  • js對象屬性名駝峰式轉下劃線的實例代碼

    js對象屬性名駝峰式轉下劃線的實例代碼

    這篇文章主要介紹了js對象屬性名駝峰式轉下劃線的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • javascript cloneNode()方法的使用

    javascript cloneNode()方法的使用

    控件cloneNode()方法的使用 實例代碼。
    2009-07-07
  • npm淘寶鏡像修改講解

    npm淘寶鏡像修改講解

    這篇文章主要介紹了npm淘寶鏡像修改講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • el-input 標簽中密碼的顯示和隱藏功能的實例代碼

    el-input 標簽中密碼的顯示和隱藏功能的實例代碼

    本文通過實例代碼給大家介紹了el-input 標簽中密碼的顯示和隱藏 ,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07

最新評論

四子王旗| 赣榆县| 伊宁县| 当阳市| 读书| 睢宁县| 日照市| 乾安县| 壶关县| 城步| 隆回县| 凤阳县| 革吉县| 南江县| 林甸县| 邮箱| 托里县| 大渡口区| 鄂温| 若羌县| 鱼台县| 辽中县| 高州市| 伽师县| 卓资县| 洞头县| 思茅市| 晋中市| 开鲁县| 太湖县| 西乡县| 富顺县| 永清县| 天门市| 金川县| 墨竹工卡县| 平顶山市| 上思县| 西乡县| 墨脱县| 南川市|