微信小程序自定义用户登录弹窗

本文实例为大家分享了微信小程序自定义用户登录弹窗的具体代码,供大家参考,具体内容如下

view

<button   class="btn" bindtap="powerDrawer" data-statu="open">立即进入</button>
<!--mask:弹出框-->
<view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if="{{showModalStatus}}"></view>
<!--content-->
<!--使用animation属性指定需要执行的动画-->
<view animation="{{animationData}}" class="drawer_box" wx:if="{{showModalStatus}}">
 <!--drawer content-->
 <view class="drawer_title">请填写</view>
 <view class="drawer_content">
 <!-- denglu  -->
    <view class='top_line'></view>
    <view class='name'>姓名</view>
    <input class='btn'  type="text" placeholder='请输入答题人姓名' maxlength='12'value="" bindinput ="userNameInput" ></input>
    <view class='line'></view>
    <view class='call'>手机号</view>
    <input class='btn' type="text" placeholder='请输入手机号' maxlength='11 'value="" bindinput ="mobileInput" ></input>
    <view class='line'></view>
 </view>
 <button class='btn_ok' type="submit" bindtap='btnclick' >快速进入</button>
 <view class="btn_ok" bindtap="powerDrawer" data-statu="close">取消</view>
</view>

css

/*css*/
 .drawer_screen {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1000;
  background: #000;
  opacity: 0.75;
  overflow: hidden;
 }
 .drawer_box {
  width: 650rpx;
  overflow: hidden;
  position: fixed;
  top: 50%;
  left: 0;
  z-index: 1001;
  background: #FAFAFA;
  margin: -150px 50rpx 0 50rpx;
  border-radius: 15px;
 }
  
 .drawer_title{
  padding:15px;
  font: 20px "microsoft yahei";
  text-align: center;
  font-size: 30rpx;
 }
 .drawer_content {
  height: 170px;
  overflow-y: scroll; /*超出父盒子高度可滚动*/
 }
 .btn_ok{
  padding: 10px;
  font: 30rpx "microsoft yahei";
  text-align: center;
  border-top: 1px solid #E8E8EA;
  color: #3CC51F;
 }
 .top{
   padding-top:8px;
 }
 .bottom {
   padding-bottom:8px;
 }
 .title {
   height: 30px;
   line-height: 30px;
   width: 160rpx;
   text-align: center;
   display: inline-block;
   font: 300 28rpx/30px "microsoft yahei";
 }
  
 .input_base {
   border: 2rpx solid #ccc;
   padding-left: 10rpx;
   margin-right: 50rpx;
 }
 .input_h30{
   height: 30px;
   line-height: 30px;
 }
 .input_h60{
   height: 60px;
 }
 .input_view{
   font: 12px "microsoft yahei";
   background: #E8E8EA;
   color:#000;
   line-height: 30px;
 }
  
 input {
   font: 12px "microsoft yahei";
   background: #E8E8EA;
   color:#000 ;
 }
 radio{
   margin-right: 20px;
 }
 .grid { display: -webkit-box; display: box; }
 .col-0 {-webkit-box-flex:0;box-flex:0;}
 .col-1 {-webkit-box-flex:1;box-flex:1;}
 .fl { float: left;}
 .fr { float: right;}
.name{
  text-align: center;
  font-size: 30rpx;
  width: 90%;
  margin: auto;
  margin-top: 30rpx; 
}
.btn{
  text-align: center;
  font-size: 30rpx;
  height: 60rpx;
  width: 90%;
  margin: auto;
  margin-top: 20rpx;
  background-color: #FAFAFA;
  border-bottom: 1rpx solid #999999;
}
.call{
  font-size: 30rpx;
  text-align: center;
  width: 90%;
  margin: auto;
  margin-top: 45rpx;
}

js

 //自定义弹框
  powerDrawer: function (e) {
    // wx.removeStorageSync('xingming')
    // wx.removeStorageSync('phone')
    var currentStatu = e.currentTarget.dataset.statu;
    this.util(currentStatu)
   },
   util: function(currentStatu){
    /* 动画部分 */
    // 第1步:创建动画实例
    var animation = wx.createAnimation({
     duration: 200, //动画时长
     timingFunction: "linear", //线性
     delay: 0 //0则不延迟
    });  
    // 第2步:这个动画实例赋给当前的动画实例
    this.animation = animation;
    // 第3步:执行第一组动画
    animation.opacity(0).rotateX(-100).step();
    // 第4步:导出动画对象赋给数据对象储存
    this.setData({
     animationData: animation.export()
    })
    // 第5步:设置定时器到指定时候后,执行第二组动画
    setTimeout(function () {
     // 执行第二组动画
     animation.opacity(1).rotateX(0).step();
     // 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象
     this.setData({
      animationData: animation
     })  
     //关闭
     if (currentStatu == "close") {
      this.setData(
       {
        showModalStatus: false
       }
      );
     }
    }.bind(this), 200)
    // 显示
    if (currentStatu == "open") {
     this.setData(
      {
       showModalStatus: true
      }
     );
    }
   },
 //登录
   userNameInput: function (e) {
    this.setData({
      userName: e.detail.value
    })
  },
  mobileInput: function (e) {
    this.setData({
      mobile: e.detail.value
    })
  },
  btnclick:function(){
    var userName = this.data.userName;
    var mobile = this.data.mobile;
    var flag = true;
    var phonetel = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/;
    var name = /^[u4E00-u9FA5]+$/;
    if (userName == '') {
      wx.showToast({
        title: '请输入用户名',
        icon: 'none',
        duration: 2000,
        mask: true
      })
      flag = false;
    } else if (mobile == '') {
      wx.showToast({
        icon: 'none',
        duration: 2000,
        title: '手机号不能为空',
      })
      flag = false;
    } 
    else if (mobile.length != 11) {
      wx.showToast({
        title: '手机号长度有误!',
        icon: 'none',
        duration: 2000,
      })
      flag = false;
    }
    var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/;
    if (!myreg.test(mobile)) {
      wx.showToast({
        title: '请输入正确信息!',
        icon: 'none',
        duration: 2000,
      })
      flag = false;
    }
    if(flag==true){
      // console.log(this.data.userName)
      // console.log(this.data.mobile)
      wx.setStorageSync('xingming',this.data.userName)
      wx.setStorageSync('phone',this.data.mobile)
       wx.navigateTo({
         url: '/pages/wenda/wenda',
       })
    }
  },

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信小程序实战之自定义模态弹窗(8)

    首先看看官方提供的模态弹窗,供大家参考,具体内容如下 api如下: 示例: 这样的模态弹窗,充其量只能做个alert,提示一下信息. 但是并不能使用它来处理复杂性的弹窗业务,因此写了Michael从新自定义了一个,采用了仿原生的样式写法 wxml: <!--button--> <view class="btn" bindtap="powerDrawer" data-statu="open">button</view&

  • 微信小程序自定义模态弹窗组件详解

    小程序自带一个showModal弹窗,调用很简单,但是限制很多,title有字数限制,中间的content也只能放文字不能放组件,所以作为一个前端碰到那种连续好几个跟微信自带的模态弹窗风格一模一样,但是功能又花里胡哨的UI稿,就不能忍受频繁的复制粘贴了.自己写了一个组件,虽然调用起来比微信自带的麻烦一点,但是还蛮实用的. 效果大概长这样. 上代码: wxml: <!-- 自定义模态弹窗 --> <view class="modalDIY" wx:if="{{

  • 微信小程序实现自定义modal弹窗封装的方法

    前言 小程序官方提供了 wx.showModal 方法,但样式比较固定,不能满足多元化需求,自定义势在必行~ 老规矩先上图 点击某个按钮,弹出 modal框,里面的内容可以自定义,可以是简单的文字提示,也可以输入框等复杂布局.操作完点击取消或确定关闭 modal. 如何使用 将下面的 modal.wxml .modal.wxss .modal.js .modal.json 四个文件复制到对应位置即可. 封装完之后调用起来也很简单,看看调用的代码吧 <modal show="{{showMo

  • 微信小程序 弹窗自定义实例代码

    微信小程序 弹窗 首先wxml代码: <view class="myToast" hidden="{{nullHouse}}">暂无有关信息</view> <view bindtap="clickArea">点击此处</view> 注:hidden属性用于切换比较频繁的地方. wxss代码设置弹窗样式: .myToast{ width:240rpx; height:130rpx; line-heig

  • 微信小程序实现自定义picker选择器弹窗内容

    微信小程序中定义好的几种picker选择器,不管是日期选择器还是地区选择器,或是其他的都有定死的样式和内容. 例如: 但是大多数开发程序的情况下还是需要自己写样式的,或是内容的. 例如: wxml <view class="free-btns" style="margin-top: 10vh;background:none;"> <button class="free-btn" bindtap="toggleDialo

  • 微信小程序自定义弹窗实现详解(可通用)

    本文为自定义弹窗,该内容可满足如下需求: 自定义各种布局弹窗 点击弹窗布局外消失弹窗 弹出弹窗时背景阴影半透明 各方向弹出效果(本文为自下而上弹出) 话不多说,先上图看效果: 点击昵称旁边的编辑按钮 弹出自定义弹窗 上图是我自己拙劣的审美自定义的一个编辑弹窗,因为重点是自定义弹窗,所以在下文的通用代码中我就去掉了这些布局,剩下填充部分由读者自行填充. 下面上代码,老规矩,还是微信小程序对应的几个文件的代码,可直接贴到页面里用的哦. .wxml 文件中 直接放到wxml的最底部就行了,十分简练.

  • 微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

    前言 我们在开发小程序时,如果想获取用户信息,就需要获取用的授权,如果用户误点了拒绝授权,我们怎么样去正确的引导用户重新授权呢.今天就来给大家讲讲如果正确的引导用户授权. 老规矩,先看效果图 从上图可以看出,我们在用户点击拒绝授权时,我们会弹出一个提示框,提示用户去设置页重新授权,当用户去授权页重新授权以后,我们再回到首页,点击获取用户信息时,就可以成功的获取到用户信息了. 如下图蓝色框里,就是我们成功的获取的用户信息.   一,我们获取用户信息的时候需要用户授权 我们点击获取用户信息时,通常会

  • 微信小程序常用的3种提示弹窗实现详解

    1. 表示操作成功,文字上方会显示一个表示操作成功的图标. wx.showToast({ title: '操作成功!', // 标题 icon: 'success', // 图标类型,默认success duration: 1500 // 提示窗停留时间,默认1500ms }) 2.表示加载中,显示为加载中图标. wx.showToast({ title: '加载中...', icon: 'loading', duration: 1500 }) 3.不显示图标,一般用作提示. wx.showTo

  • 微信小程序实现漂亮的弹窗效果

    最近项目里需要实现一个带着logo的美美哒弹窗,可是翻遍小程序的文档也只能见到wx.showModal这个丑丑的东西-- 场面一度十分尴尬 可是得做啊,要不然产品大姐又要暴走了-- 好吧,来研究一下模态对话框的性质自己DIY吧~ 实现思路 模态对话框之所以被叫做"模态",就是因为在它弹出的时候,用户如果不关闭这个对话框,是无法对其他窗口进行操作的. 那么这样一来,我们的思路就很明确了: 1. 构建一个蒙层(mask),使得背景变暗,并且阻止用户对对话框外界面的这里写代码片点击事件: 2

  • 微信小程序vant弹窗组件的实现方式

    作为从事前端开发的你肯定见过不少的弹框组件,你可曾有想过要自己实现一个弹框组件库,又或者想完全定制化的使用各种标准UI框架中的弹框组件呢? 今天这篇文章将会带着你解析这一系列疑问,以vant-weapp组件库为例,从开发标准的弹窗组件使用到高度定制复合自我审美的弹窗,再到完全研究清楚vant-weapp框架弹窗组件部分源码. 一.vant-weapp弹窗组件介绍 vant-weapp组件库是有赞团队开发的 一款灵活简洁且美观的小程序UI组件库 ,此文将以这个组件库的用法为标准,下文提及的弹框组件

随机推荐