微信小程序实战小项目

微信小程序:

请参考微信官方文档:audio | 微信开放文档 (qq.com)

实践操作:

一、身份验证

包括姓名、手机号、身份证的验证以及简单同步os的小代码块

 <view class="page-body"> <form catchtap="formSubmit">  <view style="font: bold 20px Arial;">身份信息验证:</view>  <view class="page-section">    <view class="weui-cells__title">姓名:</view>        <input class="weui-input"  maxlength="20" bindinput="nameInput" placeholder="例如:张三"/>            <view class="page-section">    <view class="weui-cells__title">身份证:</view>        <input class="weui-input"  maxlength="18" bindinput="idInput" placeholder="例如:341182194006236212"/>      </view> ​  <view class="page-section">    <view class="weui-cells__title">手机号:</view>        <input class="weui-input" type="number"  maxlength="11" bindinput="telInput" placeholder="例如:15012345678"/>      </view>  <button form-type="submit" class="mini-btn1" type="primary"  bindtap="chickMe1">提交</button>  <button form-type="reset" class="mini-btn2" type="primary" bindtap="chickMe2">清除</button> </view> </form> </view>

Page({
  data: {
    inputValue: '',
    idValue:"",
    nameValue:''
  },
  telInput: function (e) {
    this.setData({inputValue:e.detail.value})
  },
  idInput: function (e) {
    this.setData({idValue:e.detail.value})
  },
  nameInput: function (e) {
    this.setData({nameValue:e.detail.value})
  },
  formSubmit:function () {
    if(!(/^(13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9])\d{8}$/.
    test(this.data.inputValue))){
      wx.showToast({
        title: '手机号输入有误',
        icon:"none",
        duration: 800 //持续的时间
      })
    }else if(!(/^(\d{17}(\d|x|X))$/.test(this.data.idValue))){
      wx.showToast({
        title: '身份证输入有误',
        icon:"none",
        duration: 800 //持续的时间
      })
    }  else {
      wx.showToast({
        title: '输入正确',
        icon:"success",
        duration: 1500 //持续的时间
})
}
},
formReset:function () {
  wx.showToast({
    title: '已清除',
    icon:"none",
    duration: 2000 //持续的时间
  })
}
})
​
/**index.wxss**/
button{
  margin-top: 30rpx;
  margin-bottom: 30rpx;
}
.button-sp-area{
  margin: 0 auto;
  width: 60%;
}
.mini-btn1{
  margin: 100px 50px 10px 130px;
}
.mini-btn2{
  margin: 0px 50px 100px 130px;
}
.page-section{
  margin: 10px 0 0 0;
  font:bold 20px Arial;
}
.weui-input{
  background:cornsilk;
}

二、计算器

基础功能都已经实现:

  • 优点:可以做次方运算、取百分数以及连续运算

  • 缺点:结果不可以直接使用,例如:8+8=16 此时16不可作为第一个数参加运算

<!-- 背景图 -->
<!-- <image class="img" src="../../images/gr-031.jpg"></image> -->
<!-- 屏幕部分 -->
<view class="calculateScreen">
  <!-- 功能栏 -->
  <view class="funBar" style="text-align: center; font:bold 30px Arial">计算器</view>
  <!-- 结果和输入 -->
  <view class="beaiutful">
  <!-- <text style="background: blanchedalmond;">{{text}}</text> -->
  {{text}}
  </view> 
  <view class="funBar"></view>
  <button 
  wx:for="{{num}}" class="test" style="width:25vw" size="mini" bindtap="test" data-numb="{{item}}">{{item}}
 </button>
</view>
​
.calculateScreen {
  /* position: relative;
  width: 100%;
  height: 30vh; */
  background: linear-gradient(to right, #CBCE91FF, #EA738DFF);
  /* z-index: 100;
  box-shadow: 6rpx 6rpx 12px 6rpx rgba(0, 0, 0, .3);
  overflow: hidden;
  backdrop-filter: blur(20rpx); */
} 
.img{
  width: 100%;
  height: 0;
}
.funBar {
  width: 100%;
  height: 55px;
}
.beaiutful{
  background-color: rgba(255, 255, 255, .3);  /* 背景色 */
  box-shadow: 6rpx 6rpx 12px 6rpx rgba(0, 0, 0, .3);  /* 阴影 */
  backdrop-filter: blur(20rpx);  /* 高斯滤镜 */
​
}
.test{
  display: flex;
  /* flex-direction: column; */
  /* width: 320rpx; */
  height: 100rpx;
  border-radius: 70rpx;
  background-color: rgb(233, 29, 124);
  justify-content: center;
  align-items: center;
  margin-bottom: 40rpx;
  color: rgb(10, 247, 247);
​
}
.test:hover{
  color: rgb(4, 248, 228);
  background: rgb(178, 178, 219);
}
​
.beaiutful {
  width: calc(100vw - 40rpx);
  height: calc(100% - 200rpx);
  line-height: 115rpx;
  font-size: 80rpx;
  text-align: right;
  padding: 0rpx 20rpx;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-shadow: 5px 5px 5px #464443;
}

// index.js
Page({
  //背景渲染
  onLoad() {
    wx.setNavigationBarTitle({
        title: 'Ifeng',
    })
    wx.setNavigationBarColor({
        frontColor: '#ffffff',
        backgroundColor: '#C37D58',
    })
},
    //数据初始化
    data:{
    num:"C%/*789-456+1230.²½=",//生成按钮
    text:"0",//显示器内容
    num1:"",//第一个输入的数字
    num2:"",//第二个输入的数字
    op:"",//符号
    result:""//结果
  },
  //主函数
  test:function(e){
    //判断输入是否是数字、"."、²、½
    if((/^\d$/.test(e.currentTarget.dataset.numb))||e.currentTarget.dataset.numb=="."||e.currentTarget.dataset.numb=="²"||e.currentTarget.dataset.numb=="½")
    {
      //判断符号是否为空,如果为空存储num1的值 或者 进行次方运算将结果赋值给num1
      if(this.data.op==""){
          this.setData({num1:this.data.num1+e.currentTarget.dataset.numb})
          this.setData({text:this.data.num1})  
          switch(e.currentTarget.dataset.numb){
            case "²":                
                    this.setData({text:this.data.num1})
                    this.setData({num1:(parseFloat(this.data.num1)*parseFloat(this.data.num1))});       
            break
            case "½":
              this.setData({text:this.data.num1})
              this.setData({num1:(Math.sqrt(parseFloat(this.data.num1)))});
              break
            }        
      }else{//如果不为空存储num2的值 或者 进行次方运算将结果赋值给num2
        this.setData({num2:this.data.num2+e.currentTarget.dataset.numb})
        this.setData({text:this.data.num1+this.data.op+this.data.num2})
        switch(e.currentTarget.dataset.numb){
            case "²":
                    this.setData({text:this.data.num1+this.data.op+this.data.num2})
                    this.setData({num2:(parseFloat(this.data.num2)*parseFloat(this.data.num2))});
                
            break
            case "½":
                this.setData({text:this.data.num1+this.data.op+this.data.num2})
                this.setData({num2:(Math.sqrt(parseFloat(this.data.num2)))});
                break
            }
            
        }
      }
      //输入的不是数字或者次方
    else{
      //判断符号是否为空,如果为空就属于第一次计算,存储符号
      if(this.data.op==""){
      switch(e.currentTarget.dataset.numb){
        case "+":
          this.setData({op:"+"});
          this.setData({text:this.data.num1+"+"})
          break
          case "-":
            //这里进行负数判断
            if(this.data.num1==""){
              this.setData({num1:"-"})
              this.setData({text:this.data.num1})
            }else{
            this.setData({op:"-"});
            this.setData({text:this.data.num1+"-"})}
          break
          case "*":
            this.setData({op:"*"});
            this.setData({text:this.data.num1+"*"})
          break
          case "/":
            this.setData({op:"/"});
            this.setData({text:this.data.num1+"/"})
          break
          case "%":
            this.setData({op:"%"});
            this.setData({text:this.data.num1+"%"})
          break
          //清除
          case "C":
            this.setData({op:""});
            this.setData({num1:""});
            this.setData({num2:""});
            this.setData({result:""});
            this.setData({text:"0"})
            break
            //此时最多只有一个数值num1
          case "=":
              if(this.data.num1==""){
                this.setData({result:"0"});
                this.setData({text:this.data.result})
                console.log(this.data.result)
              }else {
                this.setData({result:this.data.num1});
                this.setData({text:this.data.num1})
                console.log(this.data.result)
              }
                this.setData({text:this.data.result})
                this.setData({num1:""})
              break
            }
    }
    //已存在符号并又输入了符号,这里先计算出result,赋值给num1,再进行操作
  else{
      switch(this.data.op){
      case "+":
        this.setData({result:(parseFloat(this.data.num1)+parseFloat(this.data.num2))});
        break;
        case "-":
          this.setData({result:(parseFloat(this.data.num1)-parseFloat(this.data.num2))});
          break;
          case "*":
            this.setData({result:(parseFloat(this.data.num1)*parseFloat(this.data.num2))});
            break;
            case "/":
              this.setData({result:(parseFloat(this.data.num1)/parseFloat(this.data.num2))});
              break;
              case "%":
                if(!this.data.num2==""){
                  this.setData({result:(parseFloat(this.data.num1)%parseFloat(this.data.num2))});
                }else{
                  this.setData({result:(parseFloat(this.data.num1)/100)});
                }
                break;
      }      
            console.log(this.data.result)
            this.setData({num1:this.data.result})
            this.setData({op:""})
            this.setData({num2:""})
            this.setData({text:this.data.result})
            //前面计算结果已出,此时存储新的运算符,做新的计算
            switch(e.currentTarget.dataset.numb){
              case "+":
                this.setData({op:"+"});
                this.setData({text:this.data.num1+"+"})
                break
                case "-":
                  if(this.data.num1==""){
                    this.setData({num1:"-"})
                    this.setData({text:this.data.num1})
                  }else{
                  this.setData({op:"-"});
                  this.setData({text:this.data.num1+"-"})}
                break
                case "*":
                  this.setData({op:"*"});
                  this.setData({text:this.data.num1+"*"})
                break
                case "/":
                  this.setData({op:"/"});
                  this.setData({text:this.data.num1+"/"})
                break
                case "%":
                  this.setData({op:"%"});
                  this.setData({text:this.data.num1+"%"})
                break
                case "C":
                  this.setData({op:""});
                  this.setData({num1:""});
                  this.setData({num2:""});
                  this.setData({result:""});
                  this.setData({text:"0"})
                  break
                case "=":
                  //这个情况例如直接输入 8%=
                    if(this.data.num2==""){
                      this.setData({result:this.data.num1});
                      this.setData({text:this.data.result})
                      console.log(this.data.result)
                      this.setData({num1:""})
                  }else {
                      this.setData({text:this.data.result})
                    }
                    break
          }
        }  
      }
    }
})
​
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值