iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >微信小程序实现活动报名登记功能(实例代码)
  • 631
分享到

微信小程序实现活动报名登记功能(实例代码)

2024-04-02 19:04:59 631人浏览 安东尼
摘要

目录01、实现目标02、案例分析03、代码实现1. 时间合法性检测2. 从地图中选点获取地理位置信息3. 上传微信收款二维码4. 提交表单 自2020年以来,在疫情的影响下

 自2020年以来,在疫情的影响下,越来越多的活动选择了线上进行。各式各样的微信小程序也出现在了我们生活的方方面面中。本篇将介绍使用微信小程序实现发起一个活动报名的设计,以此为基础,我们可以掌握微信小程序表单的基本用法,进而在诸如疫情信息登记、出入报备等场景中使用小程序进行开发,满足相关的需求。

01、实现目标

设计如图 1所示的页面,实现输入活动名称、设定活动的开始/结束/报名截止时间、在地图上选择活动地点、输入活动简介和活动参与人数上限以及根据费用的情况来判断是否允许用户上传微信收款二维码。注意需要对输入的时间进行校验,以及给予必要的交互提示。

▍图1 发起新活动

02、案例分析

本文以发起活动报名为示例场景,涉及小程序表单文本组件、选择器组件、地图组件的使用。同时要求对输入的数据进行合法性校验,又综合了小程序事件处理、选择渲染等内容。掌握此案例,可以较好地泛化学习其余表单的类似用法。

03、代码实现

1. 时间合法性检测

页面加载时,即会默认显示当前时间,以活动开始时间为例,页面的onLoad函数如下:

//newactivity.js
onLoad () {
    this.setData({
        acStartDate:util.fORMatDate(),
        acStartTime: util.formatTime(),
        acEndDate:util.formatDate(),
        acEndTime: util.formatTime(),
        signEndDate: util.formatDate(),
        signEndTime: util.formatTime(),
    });
},

其中,util.formatDate(),util.formatTime()来自自定义的公共函数。主要功能是将Unix的时间戳格式化成标准的年月日时分秒的格式。

前端以开始时间部分为例,代码如下:

<!--newactivity.wxml-->
<view>
<view>
<text >开始时间</text>
</view>
    <picker name="acStartDate" mode="date" start="2000-01-01" end="2100-12-31" value="{{acStartDate}}" bindchange="acStartDateChange">
        <view >
            {{acStartDate}}
        </view>
     </picker>
     <picker name="acStartTime" mode="time" start="00:00" end="23:59" value="{{acStartTime}}" bindchange="acStartTimeChange">
         <view >
             {{acStartTime}}
         </view>
      </picker>
</view>

 日期和时间分别是两个带有默认值的picker组件,每个picker组件还绑定了对应的change事件,用于获取设定的值。以acStartDateChange函数为例,函数内容如下:

acStartDateChange:function(e){
    console.log('开始日期',e.detail.value);
    this.setData({
      acStartDate:e.detail.value,
      signEndDate:e.detail.value,
      acEndDate:e.detail.value,
    });
},

改变开始日期的同时,也会改变活动结束日期和报名截止日期,减少用户调节的次数。

为了确保时间的合法性,在修改活动结束时间以及报名截止时间时,均会在响应change事件的函数中执行检测时间的函数,不合法的话,就会重设当前值。在用户最后点击“确认发起活动”时,也会在form表单组件绑定响应submit事件的函数中执行响应的检测。

检测时间的函数如下:

checkDateTime:function(){
      var result = new Object();
      var acStartDateTimeString = this.data.acStartDate + ' ' + this.data.acStartTime;
      var acStartDateTime = new Date(acStartDateTimeString);
      var acEndDateTimeString = this.data.acEndDate + ' ' + this.data.acEndTime;
      var acEndDateTime = new Date(acEndDateTimeString);
      var signEndDateTimeString = this.data.signEndDate + ' ' + this.data.signEndTime;
      var signEndDateTime = new Date(signEndDateTimeString);
      var nowDateTimeString = util.formatDate()+' '+util.formatTime();
      var nowDateTime = new Date(nowDateTimeString);
      if (acEndDateTime <= acStartDateTime) {
          result.status = false;
          result.data = "活动的结束时间必须晚于活动的开始时间!";
      } else if (signEndDateTime > acEndDateTime) {
          result.status = false;
          result.data = "报名的截止时间不能晚于活动的结束时间!"
      } else if(signEndDateTime<nowDateTime){
          result.status = false;
          result.data = "报名的截止时间不能早于当前时间!"
      }else {
          result.status = true;
      }
      if(!result.status){
          wx.showModal({
              title: '时间填写错误',
              content: result.data,
              showCancel:false,
              confirmText:'返回修改'
          })
      }
      console.log('判断结果是',result);
      return result;
},

2. 从地图中选点获取地理位置信息

在点击“地点”的输入框时,小程序会调用地图组件,根据用户定位或者在地图上的选点,获取地理位置信息。为此,需要为input组件绑定focus事件。示例如下:

<!--newactivity.wxml-->
<view >
    <text >地点</text>
</view>
<view >
    <input bindfocus="chooseLocation" name="placeName" placeholder="点击在地图上选择位置" type="text" value="{{placeName}}"/>
</view>

在chooseLocation函数中,再调用微信的wx.chooseLocation接口,打开地图选点,将获取到的经纬度等地理位置信息赋值给页面的data属性。示例如下:

//newactivity.js
chooseLocation:function(e){
    var self = this;
    wx.chooseLocation({
      success: function(res) {
        self.setData({
          placeName: res.name,
          longitude:res.longitude,
          latitude:res.latitude
        })
      },
    })
},

3. 上传微信收款二维码

在页面上输入活动费用信息时,会根据当前输入的值的大小,判断是否应该出现上传图片的组件,如图2 所示。

 

▍图2 没有费用(左)和有费用(右)

实现过程主要是通过监听费用input组件的input事件,判断输入的值大小,依据值与0的大小关系,改变一个用来标识上传图片组件显示状态的变量的值,来动态显示/隐藏上传图片组件。

示例如下:

<!--newactivity.wxml-->
<input name="fee" placeholder="¥/人" bindinput="showUpload" type="digit"/>
 
<view hidden="{{show>0? false:true}}" >
    <view>
        <block wx:if="{{imageSrc}}">
            <image src="{{imageSrc}}" class="image" bindtap="chooseImage" mode="aspectFit"></image>
            <view>点击图片可重新上传</view>
        </block>
        <block wx:else>
            <view bindtap="chooseImage">
                <view></view>
                <view></view>
            </view>
            <view>请上传您的个人微信收款二维码图片</view>
        </block>
    </view>
</view>
 
//newactivity.js
showUpload:function(e){
      this.setData({
          show:e.detail.value
      })
      console.log("费用输入的数字是:",this.data.show);
},

showUpload函数将会通过判断输入的值,来改变变量show的值,进而改变前端中的hidden属性,从而实现了上传图片组件的动态显示/隐藏。

在上传图片后,该区域需要显示出上传的图片内容,如图3所示。

▍图3 成功上传图片

该功能主要是通过绑定的tap事件函数chooseImage实现的。chooseImage函数还实现了上传文件到服务器的功能。内容如下:

//newactivity.js
chooseImage: function() {
    var self = this
    wx.chooseImage({
      count: 1,
      sizeType: ['original '],
      sourceType: ['album'],
      success: function(res) {
        console.log('chooseImage success, temp path is', res.tempFilePaths[0])
        var imageSrc = res.tempFilePaths[0]
        wx.showLoading({
            title: '正在上传',
        })
        wx.uploadFile({
          url: self.data.uploadFileUrl,
          filePath: imageSrc,
          name: 'feePic',
          success: function(res) {
              console.log('uploadImage success, res is:', res.data)
              var obj = JSON.parse(res.data);
              console.log('转换后的json对象为:',obj);
              if (obj.status == true){
                wx.hideLoading();
                wx.showToast({
                    title: '上传成功',
                    icon: 'success',
                    duration: 1000
                })
                self.setData({
                    imageSrc,
                    feePicId:obj.data
                })
            }else{
                wx.hideToast();
                wx.showModal({
                    title: '上传文件失败',
                    content: obj.data,
                })
            }
          },
          fail: function({errMsg}) {
            console.log('uploadImage fail, errMsg is', errMsg)
          }
        })
 
      },
      fail: function({errMsg}) {
        console.log('chooseImage fail, err is', errMsg)
      }
    })
  }
}

4. 提交表单

提交表单,是通过form组件的submit事件绑定的addNewActivity函数实现的。在addNewActivity函数中,会通过checkLegal函数对所有表单项进行合法性校验,并访问设定的后端服务器链接,得到服务器返回的结果后,带着活动ID参数跳转到分享活动页面。内容如下:

//newactivity.js
addNewActivity:function(e){
      var result = this.checkLegal(e);//检查表单项
      if(!result.status){
          wx.showModal({
              title: '填写信息错误',
              content: result.data,
              showCancel:false,
              confirmText:'返回修改',
              success: function (res) {
                  if (res.confirm) {
                      console.log('用户点击确定')
                  } else if (res.cancel) {
                      console.log('用户点击取消')
                  }
              }
          })
      }else{
          console.log(result.data);
          wx.showLoading({
            title: '请稍等',
          })
          qcloud.request({//小程序SDK的带有登录请求的网络请求接口
              login:true,//携带用户登录信息
              url: this.data.requestUrl,//访问服务器地址
              data:result.data,
              success:function(res){
                  if(res.data.code == 1){
                    wx.hideLoading();
                      wx.showToast({
                          title: '创建活动成功',
                          icon:'success',
                          duration:1500
                      })
                      console.log("创建的活动ID为:",res.data.id);
                      setTimeout(function () {
                          wx.redirectTo({
                              url: '../shaReactivity/shareactivity?id=' + res.data.id,//带新建活动ID跳转
                          })
                      }, 1500)
                  }
              }
          })
      }
},

到此这篇关于微信小程序实现活动报名登记的文章就介绍到这了,更多相关小程序活动报名登记内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 微信小程序实现活动报名登记功能(实例代码)

本文链接: https://www.lsjlt.com/news/166994.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序实现活动报名登记功能(实例代码)
    目录01、实现目标02、案例分析03、代码实现1. 时间合法性检测2. 从地图中选点获取地理位置信息3. 上传微信收款二维码4. 提交表单 自2020年以来,在疫情的影响下...
    99+
    2022-11-13
  • 微信小程序实现发动态功能的示例代码
    目录一、设计所需要的表1、文章表2、评论表3、点赞表二、发布动态1、文本区2、最终发表动态效果3、发布动态代码最近做了一个校园拍卖小程序,想在里面添加一个类似校园圈功能,现在来一步一...
    99+
    2022-11-13
    小程序发动态 微信小程序发动态
  • 微信小程序实现手写签名的示例代码
    目录1.效果图2.相关代码canvas代码js相关在微信小程序上实现手写签名,获取canvascontext新版本和旧版本有点坑,新版本在获取canvas后如果页面有滑动,则签名坐标...
    99+
    2022-11-13
  • 微信小程序怎样实现登录功能
    这篇文章主要介绍了微信小程序怎样实现登录功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。微信小程序登录一. 小程序不支持cookie会话 ...
    99+
    2022-10-19
  • 微信小程序弹框功能代码如何实现
    本篇内容介绍了“微信小程序弹框功能代码如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!提示框:wx.showToast实例:wx:sh...
    99+
    2023-06-26
  • 微信小程序实现滚动条功能
    本文实例为大家分享了微信小程序实现滚动条的具体代码,供大家参考,具体内容如下 view <view class="conty">   <!-- 滚动字幕 --&g...
    99+
    2022-11-13
  • 微信小程序实现幸运大转盘功能的示例代码
    目录一、项目展示二、抽奖页三、领奖页一、项目展示 幸运大转盘是一个简单的抽奖小程序 参与用户点击抽奖便可抽取轮盘的奖品 二、抽奖页 抽奖页是一个大轮盘和活动规则 页面形式简单 主要...
    99+
    2022-11-13
  • 小程序通过小程序云实现微信支付功能实例
    目录一、开通微信支付 1.1 关联商户号1.2 添加商户号1.3 管理员授权二、云函数开发2.1 新建云函数2.2 云函数代码2.3 云函数上传并部署三、小程序调用3.1 ...
    99+
    2022-11-12
  • 微信小程序开发实现首页弹框活动引导功能
    目录1.需求 2.数据库设计 3.Java后台配置实现4.微信小程序前端实现总结1.需求 后台可以配置活动时间,在活动期间,自动在小程序首页,以弹框形式显示活动图片。用户可以关闭活...
    99+
    2022-11-12
  • 微信小程序项目中如何实现记账小程序功能
    这篇文章主要介绍微信小程序项目中如何实现记账小程序功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、小程序部分这是理财系统的前端,江苏海洋大学微信小程序比赛,最后获得了一等奖Gi...
    99+
    2022-10-19
  • 微信小程序记住密码的功能简单几步实现
    目录实现思路实现源码实现思路 其实实现的核心思路非常简单,就是通过 wx.setStorageSync() 与 wx.getStorageSync() 方法在登录后将登录的信息进行存...
    99+
    2023-01-28
    微信小程序记住密码 小程序记住密码
  • 微信小程序授权登录功能如何实现
    这篇文章主要介绍“微信小程序授权登录功能如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序授权登录功能如何实现”文章能帮助大家解决问题。微信授权登录我们的项目开发有时候用到用户的一些信...
    99+
    2023-07-05
  • 微信小程序怎么实现滚动条功能
    这篇文章主要讲解了“微信小程序怎么实现滚动条功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序怎么实现滚动条功能”吧!view<view class="c...
    99+
    2023-07-02
  • 微信小程序天气预报功能怎么实现
    这篇文章主要讲解了“微信小程序天气预报功能怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序天气预报功能怎么实现”吧!这里我用的是和风天气的API,打开官网注册或者登陆你的账号...
    99+
    2023-06-30
  • 微信小程序实现计算器功能的代码怎么写
    本篇内容介绍了“微信小程序实现计算器功能的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!具体代码如下:wxml<view&n...
    99+
    2023-06-08
  • 微信小程序实现横屏和竖屏签名功能
    本文实例为大家分享了微信小程序实现横屏和竖屏签名的具体代码,供大家参考,具体内容如下 wxml <view class="container">   <canvas...
    99+
    2022-11-13
  • 微信小程序天气预报功能实现(支持自动定位,附源码)
    目录前言天气API获取微信小程序后台域名配置页面代码注意问题(必看)源码总结前言 由于和风天气API的更新,之前写的那篇文章 可能会出现版本不兼容的 情况。所以 更新了 这个 使用新...
    99+
    2022-11-13
  • 微信小程序实现表单自动填充功能
    微信小程序实现表单自动填充功能随着互联网技术的不断发展,移动应用也变得越来越普及。微信小程序作为一种轻量级的应用形式,已经成为人们生活中的重要组成部分。在微信小程序中,表单是用户与小程序进行信息交互的重要方式之一。为了提高用户体验,可以考虑...
    99+
    2023-11-21
  • 实现微信小程序中的滑动删除功能
    实现微信小程序中的滑动删除功能,需要具体代码示例随着微信小程序的流行,开发者们在开发过程中经常会遇到一些常见功能的实现问题。其中,滑动删除功能是一个常见、常用的功能需求。本文将为大家详细介绍如何在微信小程序中实现滑动删除功能,并给出具体的代...
    99+
    2023-11-21
    微信小程序 实现 滑动删除
  • 微信小程序如何实现自动客服功能
    这篇文章主要为大家展示了“微信小程序如何实现自动客服功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序如何实现自动客服功能”这篇文章吧。微信小程序最近...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作