uniapp微信小程序实现勾选相关协议后手机号快速验证登录

uniapp微信小程序实现勾选相关协议后手机号快速验证登录

目的

uniapp微信小程序的一键登录只能使用给定的button并设置open-type

<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">

其中getPhoneNumber绑定的是相关事件
可查看: 官方文档

希望实现功能:当用户点击按钮时,先判断是否已勾选自定义的相关协议,(隐私条款之类的),再调用相关手机号快速验证接口

遇到的问题

本来的想法很简单:使用ref绑定这个button,当用户点击界面上的一键登录图片按钮时(自定义的),调用按钮的点击事件,从而实现调用手机号快速验证的功能
在这里插入图片描述
但是遇到问题:由于uniapp无法使用ref绑定原生dom组件,仅支持绑定自定义组件,因此无法使用该方法实现,如果使用uniap自带的 uni.createSelectorQuery(),仅能获取dom元素的位置等节点信息,无法实现点击。

解决方法

最终想到了一种解决方法,为button设置disabled属性

<view class="login" @tap="onTapLogin">
    <button
      open-type="getPhoneNumber"
      @getphonenumber="getPhoneNumber"
      :disabled="!isAgree"
    >
      <img src="/static/login/微信.svg" alt="" class="img" />
      <view class="text">微信一键授权登录</view>
    </button>

当用户没有同意相关协议(即isAgree为false)时,按钮无法点击,同时给button设置css样式用于情况样式及实现点击穿透和取消功能

button {
  position: relative;
  display: block;
  margin-left: auto;
  margin-right: auto;
  padding-left: 0px;
  padding-right: 0px;
  box-sizing: border-box;
  text-align: center;
  text-decoration: none;
  line-height: 1.35;
  -webkit-tap-highlight-color: transparent;
  overflow: hidden;
  color: #000;
  font-size: 32rpx;
  pointer-events: auto; /* 允许点击效果 */
  background: transparent;
  width: 100%;
  height: 100%;
}

// 禁用时样式
button[disabled] {
  background: transparent !important;
  pointer-events: none; /* 禁用点击效果 */
}

当按钮被禁用时,设置的pointer-events为none,此时按钮即可触发父亲组件的onTapLogin函数,实现弹窗提醒;当用户已经勾选同意协议后,此时按钮取消禁用,即可实现快速验证的功能。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值