完整且易读的微信小程序的注册页面(包含倒计时验证码、获取用户信息)

目录

  • 1、页面展示
  • 2、wxml代码
  • 3、wxss代码
  • 4、js代码

1、页面展示

2、wxml代码

<!--pages/register/register.wxml-->
<scroll-view>
  <image src='/images/register.png' mode='widthFix' class="topImage"></image>
    <view class='input-top'>
      <input id="telphone"  maxlength='11' type="text" placeholder="请输入手机号"  bindinput="inputPhoneNum"/>
      <text wx:if="{{!send}}" bindtap='sendMsg' class="sendMsg">获取验证码</text>
      <text wx:if="{{send}}" class="sendMsg" bindtap="sendMsg">{{second+"s"}}</text>
    </view>
    <view class="input-buttom">
      <input id="captcha"  type="number" maxlength="4" placeholder="请输入4位验证码" bindinput="inputCode"/>
    </view>
    <button  class="btn" open-type="getUserInfo" bindgetuserinfo="onGotUserInfo" lang="zh_CN">立即用伞</button>
  <view class='protocol'>
    <text class="protocol-left">点击立即用伞即表示同意</text>
    <text class="protocol-right">《共享雨伞租赁服务协议》</text>
  </view>
</scroll-view>

3、wxss代码

page{
  background: #f0eff4;
}

.topImage {
  width: 100%;
  height: auto;
}

.input-top, .input-buttom {
  font-size: 30rpx;
  padding-left: 30rpx;
  margin: 0rpx 20rpx;
  background-color: white;
  height: 70rpx;
}

.input-top {
  flex-direction: row;
  display: flex;
  justify-content: space-between;
  margin-bottom: 1px;
  margin-top: 20rpx;
}

#telphone, #captcha {
  height: 70rpx;
}

.sendMsg {
  line-height: 70rpx;
  margin-right: 30rpx;
  color: #f9b400;
}

.btn {
  margin: 0rpx 20rpx;
  background-color: #f9b400;
  color: white;
  margin-top: 20rpx;
  font-size: 30rpx;
  opacity:0.8
}

/* 下方协议开始 */
.protocol{
  text-align: center;
}
.protocol-left {
  color: #333;
  font-size: 25rpx;
}

.protocol-right {
  font-size: 23rpx;
  color: #f9b400;
}
/* 下方协议结束 */

4、js代码

Page({

  //页面的初始数据
  data: {
    send: false, //是否已经发送验证码
    second: 120, //验证码有效时间
    phoneNum: '', //用户输入的电话号码
    code: '', //用户输入的验证码
  },

  //当输入手机号码后,把数据存到data中
  inputPhoneNum: function(e) {
    let phoneNum = e.detail.value;
    this.setData({
      phoneNum: phoneNum,
    })
  },

  //前台校验手机号
  checkPhoneNum: function(phoneNum) {
    let str = /^(1[3|5|8]{1}\d{9})$/;
    if (str.test(phoneNum)) {
      return true;
    } else {
      //提示手机号码格式不正确
      wx.showToast({
        title: '手机号格式不正确',
        image: '/images/warn.png',
      })
      return false;
    }
  },

  //调用发送验证码接口
  sendMsg: function() {
    var phoneNum = this.data.phoneNum;
    if (this.checkPhoneNum(phoneNum)) {
      wx.request({
        url:  '写自己的后台请求发送验证码访问URL',
        method: 'POST',
        data: {
          telphone: phoneNum,
        },
        header: {
          "Content-Type": "application/x-www-form-urlencoded"
        },
        success: (res) => {
          if (获取验证码成功) {
            //开始倒计时
            this.setData({
              send: true,
            })
            this.timer();
          } else {
            //提示获取验证码失败
            wx.showToast({
              title: '获取验证码失败',
              image: '/images/warn.png',
            })
          }
        },
      })
    }
  },

  //一个计时器
  timer: function() {
    let promise = new Promise((resolve, reject) => {
      let setTimer = setInterval(
        () => {
          this.setData({
            second: this.data.second - 1
          })
          if (this.data.second <= 0) {
            this.setData({
              second: 60,
              send: false,
            })
            resolve(setTimer)
          }
        }, 1000)
    })
    promise.then((setTimer) => {
      clearInterval(setTimer)
    })
  },

  //当输完验证码,把数据存到data中
  inputCode: function(e) {
    this.setData({
      code: e.detail.value
    })
  },

  //点击立即用伞按钮后,获取微信用户信息存到后台
  //(问题缺陷:用户更改个人信息后,后台拿到的还是旧数据,不过用户信息最重要的还是openid和用户填写的手机号,其他都不重要)
  onGotUserInfo: function(e) {

    // TODO 对数据包进行签名校验
    //前台校验数据
    if (this.data.phoneNum === '' || this.data.code===''){
      wx.showToast({
        title: "请填写手机号码和验证码",
        image: '/images/warn.png',
      })
    }
    //获取用户数据,(备注:我在用户一进入小程序就已经自动把openId获取到,然后放到缓存里)
    var userInfo = {
      nickName: e.detail.userInfo.nickName,
      avatarUrl: e.detail.userInfo.avatarUrl,
      gender: e.detail.userInfo.gender,
      phoneNum: this.data.phoneNum,
      openId: wx.getStorageSync('openid')
    }
    //获取验证码
    var code = this.data.code;

    //用户信息存到后台
    wx.request({
      url:  '写自己的后台请求注册URL',
      method: 'POST',
      data: {
        telphone: userInfo.phoneNum,
        code: code,
        nickName: userInfo.nickName,
        gender: userInfo.gender,
        openId: userInfo.openId,
      },
      header: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      success: (res) => {
        if (如果用户注册成功) {
          console.log("【用户注册成功】");
          wx.setStorage({
            key: "registered",
            data: true
          });
          wx.redirectTo({
            url: '../user/user?orderState=0'
          });
        } else {
          console.error("【用户注册失败】:" + res.data.resultMsg);
          wx.showToast({
            title: res.data.resultMsg,
            image: '/images/warn.png',
          })
        }
      }
    })
  },

})

原文地址:https://www.cnblogs.com/ranandrun/p/wxMiniRegisiter.html

时间: 2024-10-01 01:28:21

完整且易读的微信小程序的注册页面(包含倒计时验证码、获取用户信息)的相关文章

微信小程序把玩(三十八)获取设备信息 API

原文:微信小程序把玩(三十八)获取设备信息 API 获取设备信息这里分为四种, 主要属性: 网络信息wx.getNetWorkType, 系统信息wx.getSystemInfo, 重力感应数据wx.onAccelerometerChange, 罗盘数据wx.onCompassChange wxml <button type="primary" bindtap="getNetWorkType">获取网络类型</button> <butt

完整微信小程序授权登录页面教程

完整微信小程序授权登录页面教程 1.前言 微信官方对getUserInfo接口做了修改,授权窗口无法直接弹出,而取而代之是需要创建一个button,将其open-type属性绑定getUseInfo方法.在参考了网路上各种方案之后,实现了用户在授权之后跳转到小程序首页的授权登录页面. 2.实现效果 3.实现思路 在进入小程序时先对授权情况进行判断,若已经过授权则直接跳转到首页,若还未经过授权则进入授权页面,点击页面的授权按钮会弹出选择框,选择"拒绝"则不进行跳转,选择"允许&

微信快速开发框架V2.3--增加语音识别及网页获取用户信息(八),代码已更新至Github

不知不觉,版本以每周更新一次的脚步进行着,接下来应该是重构我的代码及框架的结构,有朋友反应代码有点乱,确实如此,当时写的时候只是按照订阅号来写的,后来才慢慢增加到支持API接口.目前还在开发第三方微信平台,旨在使用户能够无需自己开发就能简易搭建微信平台. 更新内容 1.增加支持语音识别 2.增加"网页授权获取用户基本信息" 语音识别其实是对Voice信息的一个扩展,您必须启用语音识别功能,启用后会在VoiceMessage中增加一个Recongnition字段,我们可以判断这个字段的内

微信小程序详细图文教程-10分钟完成微信小程序开发部署发布(3元获取腾讯云服务器带小程序支持系统)

很多朋友都认为微信小程序申请.部署.发布很难,需要很长时间. 实际上,微信和腾讯云同是腾讯产品,已经提供了10分钟(根据准备资源情况,已完成小程序申请认证)完成小程序开发.部署.发布的方式.当然,实现的是基础功能.但是,可以给学习者很便捷的体验和很好的启发. 不过,随着微信平台和云服务的发展,真担心,程序猿会失业! 目录 一.微信小程序申请 二.服务器设置(申请.部署.域名) 1.申请服务器 2.部署服务器 3.域名申请和配置 三.小程序发布 1.下载DEMO 2.下载开发工具并安装 3.配置参

如何使用微信小程序云函数发送短信验证码

其实微信小程序前端和云端都是可以调用短信平台接口发送短信的,使用云端云函数的好处是无需配置域名,也没有个数限制. 本文使用的是榛子云短信平台(http://smsow.zhenzikj.com) ,SDK下载: http://smsow.zhenzikj.com/doc/sdk.html 1. 安装下载后的SDK在cloudfunctions文件夹下会包含3个云函数文件夹,如下: 由于目前IDE没有云函数导入功能,您需要手工创建同名的云函数,然后将云函数下的文件手工拷进去 注:下载的SDK是一个

微信小程序从子页面退回父页面时的数据传递 wx.navigateBack()

我们知道,在微信小程序中,从一个页面转到另一个页面,一般情况下可以通过navigate或redirect时候的url来携带参数,然后在目标页面的onLoad函数参数中获取这些url参数.例如: // 源页面A相关代码 wx.navigateTo({ url: "/pages/mypage/mypage?a=1&b=2" }) // 目标页面B相关代码 Page({ onLoad: function (options) { var a = options.a; // 值:1 va

微信小程序跳转页面时参数过长导致参数丢失

问题描述: 微信小程序:跳转页面时传参,参数过长导致参数丢失 跳转到文章详情页时,使用的文章链接e.currentTarget.dataset.id过长导致参数丢失 handleClickArticle: function (e) { wx.navigateTo({ url: '/pages/index/articleinfo/articleinfo?urllink=' + e.currentTarget.dataset.id }) }, 解决方案: 调用微信的API,将参数编码传送,解码接收,

微信小程序开发者注册流程

一,首先打开浏览器,搜索微信公众平台 点击进入,此时还没有注册微信小程序开发账号,我们需要点击注册 进入注册页面,会出现四种账号,我们选择小程序账号 然后根据提示就可以进行注册了 注册时,需填写一下个人相关信息 填写完毕就注册好了 要开发小程序还需要对小程序进行一些信息填写 在完成这些任务之后,我们就可以进行小程序开发了 记得好用点击推荐收藏-_-

微信小程序之注册和入门

一.注册 首先,在微信公众平台mp.weixin.qq.com上注册一个帐号. 小程序开放个人开发者申请注册,个人用户可访问微信公众平台,扫码验证个人身份后即可完成小程序帐号申请并进行代码开发. 这里不写太详细,请查看 https://jingyan.baidu.com/article/4e5b3e192a33da91911e2455.html 注册完了跳转到以下页面, 补充信息,然后下载工具安装: 可以不用添加开发者,自己就是了: 二.开发入门 1.创建一个项目 登录成功后,如果是第一次使用该