首頁 > 軟體

微信小程式自定義使用者登入彈窗

2022-06-29 22:00:22

本文範例為大家分享了微信小程式自定義使用者登入彈窗的具體程式碼,供大家參考,具體內容如下

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',
       })
    }
  },

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com