文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用原生小程序组件Picker自定义日期时间选择器

2023-09-14 06:49

关注

使用原生小程序组件Picker自定义日期时间选择器

1、 Picker简单介绍

可以看到Picker类型有5种, 具体可以查看微信开放文档 picker

Picker(选择器)是一种常见的用户界面控件,用于从多个选项中选择一个或多个选项。在小程序中,Picker 是一种可用于选择日期、时间、地点等信息的组件。

小程序中的 Picker 组件提供了几种不同的模式,包括 mode="selector"mode="multiSelector"mode="time"mode="date"mode="region"等。具体的功能和用法如下:

  1. mode="selector"(单列选择器):该模式下,可以通过设置 range 属性指定一个数组作为选择器的选项列表,用户可以从中选择一个选项。

  2. mode="multiSelector"(多列选择器):该模式下,可以通过设置 range 属性指定一个二维数组作为选择器的选项列表,其中每个子数组代表一个列,用户可以在每列中选择一个选项。可以通过 rangeKey 属性为每个选项指定一个关键字,用于显示在选择器中。

  3. mode="time"(时间选择器):该模式下,用于选择时间,包括小时和分钟。可以通过设置 startend 属性指定时间的可选范围。

  4. mode="date"(日期选择器):该模式下,用于选择日期,包括年、月、日。可以通过设置 startend 属性指定日期的可选范围。

  5. mode="region"(省市区选择器):该模式下,用于选择省市区。

使用 Picker 组件,需要在小程序页面的 WXML 文件中添加相应的标签,并在相应的 JavaScript 文件中编写事件处理函数来处理用户的选择。

以下是一个示例代码,展示了如何使用 Picker 组件进行日期选择:

<view>  <picker mode="date" bindchange="handleDateChange">    <text>选择日期text>  picker>  <text>选择的日期:{{selectedDate}}text>view>
Page({  data: {    selectedDate: ''  },  handleDateChange: function (event) {    const selectedDate = event.detail.value;    this.setData({      selectedDate: selectedDate    });  }});

在示例中,使用了 mode="date" 的 Picker 组件,当用户选择日期时,会触发 bindchange 事件,然后在事件处理函数 handleDateChange 中获取选择的日期,并将其存储在页面的 data 对象中的 selectedDate 属性中。通过数据绑定,可以在页面中显示所选的日期。

通过这种方式,您可以在小程序中使用 Picker 组件来实现各种选择功能,根据不同的模式和属性设置,来满足您的特定需求。

2、日期选择器

属性名类型默认值说明最低版本
valuestring当天表示选中的日期,格式为"YYYY-MM-DD"
startstring表示有效日期范围的开始,字符串格式为"YYYY-MM-DD"
endstring表示有效日期范围的结束,字符串格式为"YYYY-MM-DD"
fieldsstringday有效值 year,month,day,表示选择器的粒度
bindchangeeventhandlevalue 改变时触发 change 事件,event.detail = {value}

fields 有效值:

说明
year选择器粒度为年
month选择器粒度为月份
day选择器粒度为天

3、实战

3.1 编写日期工具utils.js

class Util {  static dateFormat(fmt, date) {   let ret;   const opt = {"Y+": date.getFullYear().toString(), // 年"m+": (date.getMonth() + 1).toString(), // 月"d+": date.getDate().toString(), // 日"H+": date.getHours().toString(), // 时"M+": date.getMinutes().toString(), // 分"S+": date.getSeconds().toString() // 秒// 有其他格式化字符需求可以继续添加,必须转化成字符串   };   for (let k in opt) {​    ret = new RegExp("(" + k + ")").exec(fmt);if (ret) {​     fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))};   };   return fmt;  }  }  export {  Util }

3.2 在home.js中引入utils.js

import {  Util} from '../../pages/order/utils.js'// 在Page({ 中添加以下代码 }) data: {        year: Util.dateFormat("YYYY", new Date()),        month: Util.dateFormat("mm", new Date()),        date: Util.dateFormat("YYYY", new Date()) + '-' + Util.dateFormat("mm", new Date())    },    bindDateChange: function (event) {        console.log('picker发送选择改变,携带值为', event.detail.value)        const selectedDate = event.detail.value;        const year = Util.dateFormat("YYYY", new Date(selectedDate));        const month = Util.dateFormat("mm", new Date(selectedDate));        this.setData({            date: selectedDate,            year: year,            month: month,        })    },

3.3 home.wxml代码

<view>    <view>日期选择器view>    <picker mode="date" fields="month" value="YYYY-MM" bindchange="bindDateChange"  end="{{year}}+'-'+{{month}}" start="{{year-5}}">        <text>{{year}}年text><text>{{month}}月text>        <view>{{date}}view>    picker>view>

3.4 最终效果

在这里插入图片描述
在这里插入图片描述

来源地址:https://blog.csdn.net/ITKidKid/article/details/132311841

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯