2021-11-25、api:navigateTo和wx.sho

2021-11-29  本文已影响0人  疋瓞

1、案例要求:

要求制作考生登录页面index和考试信息填报页面detail。

2、实现过程

2.1、代码展示

index:

<!--pages/kj/demo111-template/index.wxml-->

<image class="title_im_style" src="{{title_image}}" mode="acceptFill"></image>
<view class="box">
  <view class="title">考场场次选择</view>
  <view class="hr"></view>

  <form bindsubmit="form_submit">

    <view class="all_common">
      <text class="dianZiYouXiang">电子邮箱:</text>
      <input name="youXiang" type="text" class="input_common youXiang" value="{{getYouXiang}}" bindchange="inputEmail" />
    </view>

    <view class="all_common">
      <text class="shuRuMiMa">输入密码:</text>
      <input name="shuRuMiMa" type="password" class="input_common" value="{{getPassWard}}" />
    </view>

    <view class="all_common">
      <text class="quRenMiMa">确认密码:</text>
      <input name="queRenMiMa" type="password" class="input_common" value="{{getPassWard_again}}" />
    </view>

    <button class="button_dengLu" type="primary" form-type="submit">登录</button>
    <view class="baoCuo">
      <view>
        <text hidden="{{msg1_hidden}}">{{showMsg01}}</text>
      </view>
      <view>
        <text hidden="{{msg2_hidden}}">{{showMsg02}}</text>
      </view>
    </view>
  </form>

</view>
/* pages/kj/demo111-template/index.wxss */
page{
    background-color: white;
}
.title_im_style{
    width: 100%;
    height: 150px;
}
.hr{
    height: 2px;
    background-color: rgb(252, 211, 27);
    margin: 5px 0px;
}
.all_common{
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-content: center;
}
.input_common{
    border-bottom: 2px solid blue;
    margin: 10px 0px;
}
.youXiang:hover{
    border-bottom: 2px solid rgb(236, 222, 18);
}
.button_dengLu{
    margin: 10px auto;
    width: 40%;
    height: 50px;
}
.baoCuo{
    background-color: yellow;
    color: red;
    text-align: center;
}

// pages/kj/demo111-template/index.js
var title_image = "https://img.haomeiwen.com/i14216764/c6ae45f0fb33ebf7.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240";

var getYouXiang = "";
var getPassWard = "";
var getPassWard_again = "";

var msg1_hidden = true;
var msg2_hidden = true;

Page({
  data: {
    title_image : title_image,
    getYouXiang : getYouXiang,
    getPassWard : getPassWard,
    getPassWard_again : getPassWard_again,
    msg1_hidden : msg1_hidden,
    msg2_hidden : msg2_hidden,    
  },
  onLoad: function(options){
    
  },
  form_submit:function(e){
    if(e.detail.value.youXiang.length == 0 || e.detail.value.shuRuMiMa.length == 0){
      msg1_hidden = false;
      this.setData({
        msg1_hidden : msg1_hidden,
        showMsg01:"邮箱或密码不能为空"
      })
    }
    else if(e.detail.value.shuRuMiMa != e.detail.value.queRenMiMa){
      console.log(e.detail.value.shuRuMiMa);
      console.log(e.detail.value.queRenMiMa);
      msg2_hidden = false;
      this.setData({
        msg2_hidden : msg2_hidden,
        showMsg02:"两次输入密码不一致",
        getPassWard : "",
        getPassWard_again : ""
      })
    }
    else{
      wx.navigateTo({
        url: '../detail/detail',
      })
    }
  },
  inputEmail:function(e){
    var email = e.detail.value;
    var checkNum = this.checkEmail(email);
    
  },
  
  checkEmail:function(email){
    let str = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/ //正则表达式
    if(str.test(email)){
      return true
    }else{
      wx.showToast({
        title:"邮箱格式错误",
        icon:"loading"
      })
      this.setData({
        getYouXiang:""
      })
      return false
    }
  }



})

detail:

<!--pages/detail/detail.wxml-->
<view class="box">
  <view class='title'>考试时段选择</view>
  <form bindsubmit="formSubmit" bindreset="formReset">
    <view class="flex">
      <text>姓名:</text>
      <input type="text" auto-focus name="name" value="{{name}}"></input>
    </view>
    <view class="flex">
      <text>学号:</text>
      <input type="number" name="id" value="{{id}}"></input>
    </view>
    <picker bindchange="chooseTime" value="{{index}}" range="{{array}}" name="time">
      请选择考试时段:{{array[index]}}
    </picker>
    <view class="btnLayout">
      <button type='primary' form-type='submit'>确定</button>
      <button type='primary' form-type="reset">取消</button>
    </view>
  </form>
</view>

/* pages/detail/detail.wxss */
page {
    /* 设置页面样式 */
    height: 100%;
    background: gainsboro;
  }
  
  .flex {
    /* 设置text组件和input组件的布局 */
    display: flex;
    margin: 5px 0;
    justify-content: flex-start; /* 设置水平方向左对齐 */
    align-items: center; /* 设置垂直方向居中对齐 */
  }
  
  input {
    /* 设置input组件样式 */
    width: 150px;
    height: 30px;
    border: 2px solid gray; /* 设置input组件边框样式 */
    margin: 5px;
  }
  
  input:hover {
    /* 设置输入时input组件边框样式 */
    border: 2px solid chocolate;
  }
  
  picker {
    /* 设置picker组件样式 */
    margin: 10px;
    padding-top: 10px;
    padding-bottom: 10px;
  }
  
  .btnLayout {
    /* 设置button组件布局 */
    display: flex;
    flex-direction: row;
    justify-content: space-around;
    margin: 50px 0;
    width: 100%;
  }
  
  button {
    /* 设置button组件样式 */
    width: 80px;
  }
  
// pages/detail/detail.js
 
Page({
    data: {
      array: [
          '',
        '第一场15:00', 
        '第二场16:20', 
        '第三场17:40'
      ]
    },
  
    formSubmit: function (e) {
      var name = e.detail.value.name;  //获取姓名输入框内容
      var id = e.detail.value.id; //获取学号输入框内容
      var time=e.detail.value.time; //获取考试场次序号及时间
      wx.showModal({  //显示模态对话框
        title: '确认信息',
        content: e.detail.value.name + "同学,你的学号是:"+id+",你选择的场次是:"+this.data.array[time]+",请确认信息!",
        success: function (res) {  //wx.showModal接口调用成功的回调函数
          if (res.confirm) {
            wx.showModal({
              title: '信息确认',
              content: '你的考场信息已经确认!',
            })
            wx.navigateTo({  //页面跳转
              url: '../index/index',
            })
          } else {
            console.log('用户点击取消')
          }
        }
      })
    },
    formReset:function(e){
        this.setData({
            index: 0
          })
    },
    chooseTime: function (e) {
      var index = e.detail.value  //获得picker组件选项下标
      this.setData({
        index: index
      })
    }
  }) 
  

2.2、结果展示

结果1.png 结果2.png

3、知识汇总

知识要点.png
正则表达式.png
正则表达式验证邮箱的方法1.png
正则表达式验证邮箱的方法2.png
模态对话框.png
模态对话框属性.png
回调函数success及其属性说明.png
navigateto函数.png
西安工程大学log.jpeg

4、踩坑说明

<input name="youXiang" type="number" class="input_common" value="{{getYouXiang}}" />
input:hover{
    border-bottom: 2px solid rgb(236, 222, 18);
}
<picker bindchange="chooseTime" value="{{index}}" range="{{array}}" name="time">
      请选择考试时段:{{array[index]}}
</picker>
上一篇 下一篇

猜你喜欢

热点阅读