微信小程序模拟数据的三级联动

html

<view class='compile'>
    <view>
    <view class='inpur'>
        联系人<input placeholder='姓名' class='inp' bindinput="nameInput"></input>
    </view>
     <view class='inpur'>
        手机号码<input placeholder='11位手机号码' class='inp' bindinput="telInput"></input>
    </view>
     <view class='inpur'>
        详细地址
      <!--三级联动  -->
        <picker bindchange="selectedProvince" value="{{index}}" range="{{arrayProvince}}" class='in'>  
            <view class="picker">  
              {{province}}  
            </view>  
        </picker>  
        <picker bindchange="selectedCity" value="{{index}}" range="{{arrayCity}}" class='in'>  
          <view class="picker">  
            {{city}}  
          </view>  
      </picker>  
        <picker bindchange="selectedDistrict" value="{{index}}" range="{{arrayDistrict}}" class='in'>  
          <view class="picker">  
            {{district}}  
          </view>  
      </picker>  
    </view>
     <view class='inpur'>
        详细地址<input placeholder='街道门牌号' class='inp' bindinput="addressInput"></input>
    </view>
     <view class='inpur'>
        邮证编号<input placeholder='邮证编号' class='inp' bindinput="youInput"></input>
    </view>
    <view class='btns btns1' bindtap='btn1'>保存</view>
    <view class='btns btns2' bindtap='btn2'>从微信读取</view>
    <view class='btns' bindtap='btn3'>取消</view>
</view>
</view>

css

.compile{
  width: 100%;
  height: 1100rpx;
  background: #F4F5F9;
}
.inpur{
  width:94%;
  padding: 3%;
  height: 100rpx;
  display: flex;
  justify-content:space-between;
  align-items: center;
  font-size: 35rpx;
  background: #fff;
  border-bottom: 1rpx solid lightgray;
}
.inp{
  width: 70%;
  padding-left: 20rpx;
   font-size: 35rpx;
}
.in{
  width: 24%;
  text-align: left;
  color: gray;
}
.btns{
  width: 90%;
  height: 100rpx;
  line-height: 100rpx;
  margin: 10rpx auto;
  text-align: center;
  border: 1rpx solid lightgray;
  color: black;
  background: #fff;
}
.btns1{
  color: #fff;
  background: #B4272D;
}
.btns2{
  color: #fff;
  background: #19AD19;
}

js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    province: '省',
    city: '市',
    district: '区',
    arrayProvince: [],
    arrayCity: [],
    arrayDistrict: [],
    indexProvince: 0,
    indexCity: 0,
    IndexDistrict: 0,
    citylist1: [],
    citylist: [{ "p": "北京", "c": [{ "n": "东城区" }, { "n": "西城区" }, { "n": "崇文区" }, { "n": "宣武区" }, { "n": "朝阳区" }, { "n": "丰台区" }, { "n": "石景山区" }, { "n": "海淀区" }, { "n": "门头沟区" }, { "n": "房山区" }, { "n": "通州区" }, { "n": "顺义区" }, { "n": "昌平区" }, { "n": "大兴区" }, { "n": "平谷区" }, { "n": "怀柔区" }, { "n": "密云县" }, { "n": "延庆县" }] }, { "p": "台湾", "c": [{ "n": "台北市" }, { "n": "高雄市" }, { "n": "基隆市" }, { "n": "台中市" }, { "n": "台南市" }, { "n": "新竹市" }, { "n": "嘉义市" }, { "n": "台北县" }, { "n": "宜兰县" }, { "n": "新竹县" }, { "n": "桃园县" }, { "n": "苗栗县" }, { "n": "台中县" }, { "n": "彰化县" }, { "n": "南投县" }, { "n": "嘉义县" }, { "n": "云林县" }, { "n": "台南县" }, { "n": "高雄县" }, { "n": "屏东县" }, { "n": "台东县" }, { "n": "花莲县" }, { "n": "澎湖县" }] }, { "p": "山西", "c": [{ "n": "太原", "a": [{ "s": "小店区" }, { "s": "迎泽区" }, { "s": "杏花岭区" }, { "s": "尖草坪区" }, { "s": "万柏林区" }, { "s": "晋源区" }, { "s": "清徐县" }, { "s": "阳曲县" }, { "s": "娄烦县" }, { "s": "古交市" }] }, { "n": "大同", "a": [{ "s": "城区" }, { "s": "矿区" }, { "s": "南郊区" }, { "s": "新荣区" }, { "s": "阳高县" }, { "s": "天镇县" }, { "s": "广灵县" }, { "s": "灵丘县" }, { "s": "浑源县" }, { "s": "左云县" }, { "s": "大同县" }] }, { "n": "阳泉", "a": [{ "s": "城区" }, { "s": "矿区" }, { "s": "郊区" }, { "s": "平定县" }, { "s": "盂县" }] }, { "n": "长治", "a": [{ "s": "城区" }, { "s": "郊区" }, { "s": "长治县" }, { "s": "襄垣县" }, { "s": "屯留县" }, { "s": "平顺县" }, { "s": "黎城县" }, { "s": "壶关县" }, { "s": "长子县" }, { "s": "武乡县" }, { "s": "沁县" }, { "s": "沁源县" }, { "s": "潞城市" }] }, { "n": "晋城", "a": [{ "s": "城区" }, { "s": "沁水县" }, { "s": "阳城县" }, { "s": "陵川县" }, { "s": "泽州县" }, { "s": "高平市" }] }, { "n": "朔州", "a": [{ "s": "朔城区" }, { "s": "平鲁区" }, { "s": "山阴县" }, { "s": "应县" }, { "s": "右玉县" }, { "s": "怀仁县" }] }, { "n": "晋中", "a": [{ "s": "榆次区" }, { "s": "榆社县" }, { "s": "左权县" }, { "s": "和顺县" }, { "s": "昔阳县" }, { "s": "寿阳县" }, { "s": "太谷县" }, { "s": "祁县" }, { "s": "平遥县" }, { "s": "灵石县" }, { "s": "介休市" }] }, { "n": "运城", "a": [{ "s": "盐湖区" }, { "s": "临猗县" }, { "s": "万荣县" }, { "s": "闻喜县" }, { "s": "稷山县" }, { "s": "新绛县" }, { "s": "绛县" }, { "s": "垣曲县" }, { "s": "夏县" }, { "s": "平陆县" }, { "s": "芮城县" }, { "s": "永济市" }, { "s": "河津市" }] }, { "n": "忻州", "a": [{ "s": "忻府区" }, { "s": "定襄县" }, { "s": "五台县" }, { "s": "代县" }, { "s": "繁峙县" }, { "s": "宁武县" }, { "s": "静乐县" }, { "s": "神池县" }, { "s": "五寨县" }, { "s": "岢岚县" }, { "s": "河曲县" }, { "s": "保德县" }, { "s": "偏关县" }, { "s": "原平市" }] }, { "n": "临汾", "a": [{ "s": "尧都区" }, { "s": "曲沃县" }, { "s": "翼城县" }, { "s": "襄汾县" }, { "s": "洪洞县" }, { "s": "古县" }, { "s": "安泽县" }, { "s": "浮山县" }, { "s": "吉县" }, { "s": "乡宁县" }, { "s": "大宁县" }, { "s": "隰县" }, { "s": "永和县" }, { "s": "蒲县" }, { "s": "汾西县" }, { "s": "侯马市" }, { "s": "霍州市" }] }, { "n": "吕梁", "a": [{ "s": "离石区" }, { "s": "文水县" }, { "s": "交城县" }, { "s": "兴县" }, { "s": "临县" }, { "s": "柳林县" }, { "s": "石楼县" }, { "s": "岚县" }, { "s": "方山县" }, { "s": "中阳县" }, { "s": "交口县" }, { "s": "孝义市" }, { "s": "汾阳市" }] }] }]

  },
  nameInput:function(e){
    let name = e.detail.value
    this.setData({
      addressname:name
    })
  },
  telInput: function (e) {
    let tel = e.detail.value
    this.setData({
      addresstel: tel
    })
  },
  addressInput: function (e) {
    let addressInput = e.detail.value
    this.setData({
      addressInput: addressInput
    })
  },
  youInput: function (e) {
    let youInput = e.detail.value
    this.setData({
      addressyouInput: youInput
    })
  },
  onLoad: function (options) {

  },
  btn1: function (event) {
    if (this.data.addressname==""){
      wx.showToast({
        title: '请填写名字',
        icon: 'none',
        duration: 2000,
        mask:true
      })
    } else if (this.data.addresstel == ""){
      wx.showToast({
        title: '请填写电话号',
        icon: 'none',
        duration: 2000,
        mask: true
      })
    } else if (this.data.addressInput == ""){
      wx.showToast({
        title: '请填写详细地址',
        icon: 'none',
        duration: 2000,
        mask: true
      })
    } else if (this.data.addressyouInput == ""){
      wx.showToast({
        title: '请填写邮政编码',
        icon: 'none',
        duration: 2000,
        mask: true
      })
    } else if (this.data.province == "") {
      wx.showToast({
        title: '请填写省',
        icon: 'none',
        duration: 2000,
        mask: true
      })
    } else if (this.data.city == "") {
      wx.showToast({
        title: '请填写市',
        icon: 'none',
        duration: 2000,
        mask: true
      })
    } else if (this.data.district == "") {
      wx.showToast({
        title: '请填写区',
        icon: 'none',
        duration: 2000,
        mask: true
      })
    }else{
      wx.setStorage({
        key: 'address',
        data:{
          "name": this.data.addressname,
          "tel": this.data.addresstel,
          "addressInput": this.data.addressInput,
          "addressyouInput": this.data.addressyouInput,
          "province": this.data.province,
          "city": this.data.city,
          "district": this.data.district,
          "flag":true
         }
      })
      wx.showToast({
        title: '已保存',
        icon: 'success',
        duration: 2000,
        mask: true
      })
    wx.navigateBack({ delta: 1 })

    }
    // console.log(this.data.province) //province
    // console.log(this.data.city) //city  
    // console.log(this.data.district) //district  区
    
  },
  onLoad: function () {
    //获取省份列表  
    var arrayTemp = [];
    for (var i = 0; i < this.data.citylist.length; i++) {
      arrayTemp.push(this.data.citylist[i].p); 
    }
    this.setData({
      arrayProvince: arrayTemp,
    })
  },
  selectedProvince: function (e) {
    //获取省份列表  
    var arrayTemp1 = [];
    var arrayTemp = this.data.citylist[e.detail.value].c;
    if (arrayTemp[0].a) {
      for (var i = 0; i < arrayTemp.length; i++) {
        arrayTemp1.push(arrayTemp[i].n);
      }
      //更新市显示  
      this.setData({
        province: this.data.arrayProvince[e.detail.value],
        indexProvince: e.detail.value,
        arrayCity: arrayTemp1,
        city: '市',
        district: '区',
      })
    }
    //直辖市  
    else {
      for (var i = 0; i < arrayTemp.length; i++) {
        arrayTemp1.push(arrayTemp[i].n);
      }
      //更新市显示  
      this.setData({
        province: '直辖市',
        indexProvince: -1,
        city: this.data.arrayProvince[e.detail.value],
        district: '区',
        arrayDistrict: arrayTemp1,
      })
    }

  },
  selectedCity: function (e) {
    //获取区列表  
    var arrayTemp1 = [];
    var arrayTemp = this.data.citylist[this.data.indexProvince].c[e.detail.value].a;

    for (var i = 0; i < arrayTemp.length; i++) {
      arrayTemp1.push(arrayTemp[i].s);
    }

    //更新区显示  
    this.setData({
      city: this.data.arrayCity[e.detail.value],
      indexCity: e.detail.value,
      arrayDistrict: arrayTemp1,
      district: '区',
    })

  },
  selectedDistrict: function (e) {
    var arrayTemp1 = [];
    //直辖市  
    if (this.data.indexProvince === -1) {
      //更新区显示  
      this.setData({
        district: this.data.arrayDistrict[e.detail.value],
        indexDistrict: e.detail.value,
      })
    }
    //省  
    else {
      //获取省份列表  
      var arrayTemp = this.data.citylist[this.data.indexProvince].c[this.data.indexCity].a;

      //更新区显示  
      this.setData({
        district: arrayTemp[e.detail.value].s,
        indexDistrict: e.detail.value,
      })
    }
  },
})
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 北京2018年4月1日上午,NBA常规赛勇士客战国王的比赛中,发生了令人痛心不已的一幕。比赛进行到第三节还有41...
    Curry_宇阅读 1,172评论 1 1
  • 前言 微信之父张小龙在年初的那次演讲中曾表示:“我自己是很多年的程序员,我觉得我们应该为开发的团队做一些事情”。几...
    4638d5195a5f阅读 1,372评论 0 2
  • 又工作了一天,整个人都好疲惫,脑子都是混乱的,实在是不想写什么了。恰巧这是看到群里面大家再讨论关于“是否将承诺大声...
    夏野阅读 480评论 0 0
  • 黎明 Before Sunrise 阳光集:爱是光(爱情诗) 黎明 黎明 我和你 在人生的十字路口 相遇不期 我眼...
    雨荷南田阅读 387评论 0 1
  • 工作一天中午锻炼,回到家非常累,吃了不少东西,打完游戏就睡了,唉
    兆之阅读 137评论 0 0