利用正则表达式验证邮箱的方法、 wx.showModal()和wx.navigateTo() 函数的使用方法

<!--pages/index/index.wxml-->
<image src="../image/ncut.jpg" mode="scaleToFill"></image>
<view class="box">
  <view class='title'>考试场次选择</view>
  <view class='hr'></view>
  <form bindsubmit="formSubmit">
    <view class="lineLayout">
      <text>电子邮箱:</text>
      <input type="text" bindchange="inputemail" name="email" value="{{getEmail}}"></input>
    </view>
    <view class="lineLayout">
      <text> 输入密码:</text>
      <input type="password" name="password" value="{{getPwd}}"></input>
    </view>
    <view class="lineLayout">
      <text> 确认密码:</text>
      <input type="password" name="confirm" value="{{getPwdConfirm}}"></input>
    </view>    
    <button type='primary' form-type='submit'>登录</button>
    <view>
      <view class="txt">{{showMsg01}}</view>
      <view class='txt'>{{showMsg02}}</view>     
    </view>
  </form>
</view>
<view class="txt">{{showMsg01}}</view>
<view class='txt'>{{showMsg02}}</view> 
在js中没有初始化或者初始化为空,所以这里不显示
// pages/index/index.js
Page({
  data: {
    getEmail: '',
    getPwd: '',
    getPwdConfirm: ''
  },
  formSubmit: function(e) { //提交表单(点击注册按钮)事件
    if (e.detail.value.email.length == 0 || e.detail.value.password.length == 0) { //判断邮箱和密码输入框内容是否为空。
      this.setData({
        showMsg01: '邮箱或密码不得为空!',
      })
    } else if (e.detail.value.password != e.detail.value.confirm) { //判断密码和确认密码是否一致
      this.setData({
        showMsg02: '两次输入密码不一致!',
        getPwd: '', //清空输入框内容
        getPwdConfirm: ''
      })
    } else {
      wx.navigateTo({ //页面跳转
        url: '../detail/detail',
      })
    }
  },
  inputemail: function(e) { //input组件事件函数
    var email = e.detail.value
    var checkedNum = 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({
        getEmail: ''
      })
      return false
    }
  }
})
/* pages/index/index.wxss */

page {
  /* 设置页面样式 */
  height: 100%;
  background: gainsboro;
}

image {
  /* 设置图片样式 */
  width: 100%;
  height: 110px;
}

.hr {
  /* 设置水平线样式 */
  height: 2px;
  background-color: yellowgreen;
  margin: 10px 0;
}

.lineLayout {
  /* 设置text和input组件布局 */
  display: inline-block; /* 设置布局模式,行内布局-块布局,可以设置行高,在input样式中设置 */
  margin: 10px;
}

text {
  /* 设置text组件样式 */
  float: left; /* 设置为左浮动 */
}

input {
  /* 设置input组件样式 */
  width: 180px;
  height: 30px;
  border-bottom: 2px solid blue;
  float: left; /* 设置为左浮动 */
}

input:hover {
  /*设置输入时input组件的样式,一点input后变颜色*/
  border-bottom: 2px solid chocolate;
}

button {
  /* 设置button组件样式 */
  width: 150px;
  margin: 20px auto; /*上下边距20px,左右边距自动(左右边距相等)*/
}

.txt {
  /* 设置信息提示区文本显示样式 */
  color: red;
  background: yellow;
}

<!--pages/detail/detail.wxml-->
<view class="box">
  <view class='title'>考试时段选择</view>
  <form bindsubmit="formSubmit">
    <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'>取消</button>
    </view>
  </form>
</view>
auto-focus自动进行获取焦点
index选择那一项的下标,页面显示array[index]
<form bindsubmit="formSubmit">绑定事件对应的函数是formSubmit,该事件是由form-type='submit'这个确定按钮引发的,取消按钮没有绑定事件函数,没有form-type='reset'
      <button type='primary' form-type='submit'>确定</button>
      <button type='primary'>取消</button>
// 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; //局部变量,获取考试场次序号及时间,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('用户点击取消')
        }
      }
    })
  },

  chooseTime: function (e) {//获取选择时段的下标
    var index = e.detail.value  //获得picker组件选项下标,普通选择器获取的是下标
    this.setData({
      index: index//下标渲染到detail.wxml文件
    })
  }
}) 
timepick组件数组选择的那项的下标
this.data.array[time]选择的具体的时段
success回调函数,当模态对话框显示以后,说明调用成功,res代表窗口的资源,其中包含确定按钮
chooseTime,pick组件选择的时候引发的,普通选择器获得的是下标,然后把下标渲染到detail.wxml文件
/* pages/detail/detail.wxss */

page {
  /* 设置页面样式 */
  height: 100%;
  background: gainsboro;
}

.flex {
  /* 设置text组件和input组件的布局 */
  display: flex;/*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布局,水平方向*/
  flex-direction: row;
  justify-content: space-around;/*中间有间隔,两端也有间隔,两端的间隔一样的*/
  margin: 50px 0;
  width: 100%;
}

button {
  /* 设置button组件样式 */
  width: 80px;
}

 

 

正则表达式验证邮箱的方法

  正则表达式

    由一些普通字符和一些元字符 (metacharacters)组成。普通字符包括大 小写字母和数字,而元字符则具有特殊的 含义,其含义可以查阅配套教材或其他资料。

  正则表达式验证邮箱

    正则表达式以符号/^开始,以符号$/结束,例如: /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9- ]+)*\.[a-zA-Z0-9]{2,6}$/

    @之前的表达式: [a-zA-Z0-9_.-]+ 表示字符串必须由1个及1个以上的大小写字母、 数字、下划线、点或横杠组成,+号表示前面字符出现次数必须大于或等于1

  利用正则表达式验证电子邮箱

    @之后的表达式:[a-zA-Z0-9-]+ 表示字符串必须由1个及1个以上的大小写字母、 数字、下划线或横杠组成。

    (\.[a-zA-Z0-9-]+)* 表示后面字符串第一个字符必须是点,点后面字符 串必须由1个及以上的大小写字母、数字、下划线或 横杠组成。*表示匹配前面的子表达式任意次。

    \.[a-zA-Z0-9]{2,6} 表示最后一个表达式由2~6个字母或数字构成

模态对话框 API 函 数 wx.showModal() 的 使用方法

  wx.showModal(Object object)

  用于显示模态对话框。模态对话框 显 示时不能操作该应用程序的其他窗口,而非 模态对话框则可以。其参数主要属性如下:

  

   success(Object res)回调函数的参数属性

  

页面跳转API函数wx.navigateTo()的使用 方法

  wx.navigateTo(Object object)

  保留当前页面,跳转到应用内的某个页面。 但 是不能跳到 tabbar 页面。使用 wx.navigateBack()函 数可以返回到原页面。其参数属性除success、fail和 complete三个回调函数外,还有一个string类型的必 填属性url,表示需要跳转页面的路径。