小程序实现城市列表的选择

微信小程序实战—实现城市列表的选择

实现效果预览

首页 
城市列表

实现功能简介
  • 城市的选择
  • 中文/拼音/首字母条件搜索
  • 按首字字母快速定位到城市位置
目录结构

这里写图片描述

主要代码
app.js
App({
  globalData: {
    trainBeginCity: '杭州',
    trainEndCity: '北京'
  }
})
app.json
{
  "pages":[
    "pages/index/index",
    "pages/citys/citys"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black",
    "enablePullDownRefresh": true
  }
}
index.wxml
<view class='warning-top'>测试消息消息这是测试消息啊啊啊</view>
<form bindsubmit="formSubmit" bindreset="formReset" class='form-content'>
  <view class='flex-box' data-id='出发城市'>
    <view class='flex-box-header'>出发城市</view>
    <view class="flex-box-content">
      <input name='beginCity' value='{
  {begin}}' disabled='disabled' placeholder="" bindtap='bindBeginCityView' class='input-city'/>
    </view>
  </view>

  <view class="flex-box" data-id='目的城市'>
    <view class='flex-box-header'>目的城市</view>
    <view class="flex-box-content">
      <input name='endCity' value='{
  {end}}' placeholder="" disabled='disabled' bindtap='bindEndCityView' class='input-city'/>
    </view>
  </view>

  <view class="flex-box">
    <view class='flex-box-header'>出发日期</view>
    <picker mode="date" name='leaveDate' class='flex-box-content-pricker' value="{
  {date}}" start="2018-01-01" end="2019-09-01" bindchange="bindDateChange" >
      <view class='input-city'>{
  {date}}</view>
    </picker>
  </view>

  <view class="btn-area">
    <button formType="submit" class='btn-query'>查询</button>
  </view>
</form>
index.js
const app = getApp()

Page({
  data: {
    begin: '',
    end: '',
    date: null
  },

  formSubmit: function (e) {
    // console.log('form发生了submit事件,携带数据为:', e.detail.value)
    wx.navigateTo({
      url: '../trains/trains?beginCity=' + e.detail.value.beginCity + "&endCity=" + e.detail.value.endCity + "&leaveDate=" + e.detail.value.leaveDate,
    })
  },
  formReset: function () {
    console.log('form发生了reset事件')
  },
  bindDateChange: function (e) {
    this.setData({
      date: e.detail.value
    })
  },
  onLoad: function (options) {
    // wx.navigateTo({
    //   url: '../citys/citys?cityType=begin',
    // })


    if (this.data.date == null || this.data.date.trim() == "") {
      var day = new Date()
      day.setTime(day.getTime() + 24 * 60 * 60 * 1000);
      var year = day.getFullYear();       //年
      var month = day.getMonth() + 1;     //月
      var day = day.getDate();            //日

      if (month < 10) { month = "0" + month; }
      if (day < 10) { day = "0" + day; }
      this.setData({ date: year + '-' + month + '-' + day })
    }
  }, onPullDownRefresh: function () {
    wx.stopPullDownRefresh();
  }, bindBeginCityView: function () {
    wx.navigateTo({
      url: '../citys/citys?cityType=begin',
    })
  }, bindEndCityView: function () {
    wx.navigateTo({
      url: '../citys/citys?cityType=end',
    })
  }, onShow: function () {
    this.setData({ begin: app.globalData.trainBeginCity })
    this.setData({ end: app.globalData.trainEndCity })
  }


})
index.wxss
.flex-box {
  display: flex;
  flex-direction: row;
  border-bottom: #CCCCCC solid 1px;
  margin: 28rpx;
  width: 600rpx;
  padding:10rpx;
  height: 70rpx;
}

.btn-area{
  margin: 30rpx;
  width: 600rpx;
}

.flex-box-header{
  width: 25%;
  font-size: 30rpx;
  margin-top: 10rpx;
  color: #999999;

  /* line-height: 60rpx; */
}

.flex-box-content{
  width: 70%;
  margin-top: 0rpx; 
  font-size: 45rpx;
}
.flex-box-content-pricker{
  margin-top: 0rpx; 
  width: 70%;
  font-size: 45rpx;
}


.form-content{
  margin-top:30rpx; 
  display: flex;
  margin-left: 5%;
  width: 90%;
  background-color: #FFFFFF;
  border-radius: 20rpx;
  /* border: 3rpx solid #CCCCCC;  */
  height: 530rpx;
}


.bus-view{
  display: flex;
  flex-direction: row;
  width: 700rpx;
  height: 100rpx;
  margin:20rpx
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Taro.js是一种支持多个小程序平台开发的框架,它提供了一种简洁、高效的方式来创建微信小程序。在Taro.js中,我们可以使用城市选择列表组件来方便地实现城市选择功能。 微信小程序城市选择列表是指用户可以在小程序选择所在城市的功能。使用Taro.js开发微信小程序时,我们可以通过调用微信小程序提供的定位功能,获取用户所在位置的经纬度信息。然后,我们可以将经纬度信息传递给城市选择列表组件,让用户选择所在城市城市选择列表通常包括省份和城市两级下拉菜单。当用户选择省份时,城市列表会动态更新为该省份对应的城市列表。用户可以通过滚动或搜索的方式,在城市列表选择目标城市。用户选择完成后,我们可以将所选择城市信息传递给后端服务器,进行进一步的处理。 在Taro.js中,我们可以使用类似以下的代码来实现城市选择列表: ``` import { View, Picker } from '@tarojs/components' const cities = { 北京: ['北京市'], 上海: ['上海市'], 广东: ['广州市', '深圳市', '珠海市', '东莞市'], ... } export default class CitySelector extends Component { state = { province: '', city: '', } handleProvinceChange = e => { const province = e.detail.value const city = cities[province][0] this.setState({ province, city }) } handleCityChange = e => { const city = e.detail.value this.setState({ city }) } render() { const { province, city } = this.state return ( <View> <Picker mode='selector' range={Object.keys(cities)} onChange={this.handleProvinceChange}> <View>{province || '请选择省份'}</View> </Picker> <Picker mode='selector' range={cities[province]} onChange={this.handleCityChange}> <View>{city || '请选择城市'}</View> </Picker> </View> ) } } ``` 以上代码中,我们定义了一个城市选择列表组件`CitySelector`,其中使用了`Picker`组件来实现下拉选择功能。`cities`对象存储了各省份对应的城市列表。当用户选择省份时,触发`handleProvinceChange`函数,在城市列表中显示对应省份的城市。当用户选择城市时,触发`handleCityChange`函数,更新城市信息。最终,用户选择的省份和城市会保存在`state`中,方便后续的数据处理和传递。 通过这样的方式,我们可以在Taro.js微信小程序实现城市选择列表的功能。希望这个回答能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值