微信小程序form提交内容验证封装-手机号、内容为空、验证码倒计时

效果前

效果后

//common.js
// ---封装文件  复用-----
// 提交字段检验

class Check {
  constructor (){

  }

  content(txt,info){//内容

    if(txt==''){
      wx.showToast({
        title: info,
        icon: 'none',
        duration: 1000
      })
      return false;
    }else{
      return true;
    }
  }

  tel(tel,info){//电话
    let isMobile = /^(?:13\d|15\d|17\d|14\d|18\d|16\d|19\d)\d{5}(\d{3}|\*{3})$/; //手机号码验证规则
    let isPhone = /^((0\d{2,3}))(\d{7,8})(-(\d{3,}))?$/;   //座机验证规则

    if (!isMobile.test(tel) && !isPhone.test(tel)){
      wx.showToast({
        title: '电话格式错误',
        icon: 'none',
        duration: 1000
      })
       return false;
     }else{
       return true
     }
   
  }

  checkEmail(val){//邮箱
    let isEmail=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
    if(!isEmail.test(val)){
      wx.showToast({
        title: '邮箱格式错误',
        icon: 'none',
        duration: 1000
      })
       return false;
     }else{
       return true
     }

  }
  
  digit(numm,info){//数字

    if(numm=='' || numm==null || typeof parseInt(numm) != 'number'){
      wx.showToast({
        title: info,
        icon: 'none',
        duration: 1000
      })
       return false;
     }else{
       return true
     }
  }
  
   multSelect(arr,info){//多选&单选,筛查符合条件的数据,数据结构为数组对象
    let data = [];
    Object.entries(arr).filter(([key,val])=>{
          if(val.isShow){
            data.push(val);
          }
      })
      if(data.length>0){//选中的个数大于1
        // tjData.push(data);
        return data;
      }else{
        wx.showToast({
          title: `请选择${info}`,
          icon: 'none',
          duration: 1000
        })
        return false;
      }
  }
   yzm(code){//yzm
   
    let isNum = /^[0-9]{6}$/;
    if(!isNum.test(code)){
      wx.showToast({
        title: '验证码格式错误',
        icon: 'none',
        duration: 1000
      })
       return false;
     }else{
       return true
     }

  }



  countDown(vm){	//获取验证码倒计时效果
  //yzmtitle 固定名称
    //原理:通过把当前页面的this传递过去,修改当前页面的data
   
	let timerCountDown = null;
	    let timenum = 60;
	 return   timerCountDown = setInterval(function(){
	      timenum --;
	      if(timenum==0){
	        clearInterval(timerCountDown);
	        vm.setData({yzmtitle:'获取验证码',isYzm:false})
	        return
	      }
	      vm.setData({yzmtitle:`${timenum}s后重新获取`,isYzm:true})
	    },1000)
  
  


  }
  
  clearCountDown(){//清除计时器
    clearInterval(timerCountDown);
  }

}
const check = new Check({})

module.exports = check
// xx.html
 <input type="text"   placeholder="联系人姓名" maxlength="10" bindinput="onContentChange" data-type="uname" value="{{uname}}"/>
<button  class="{{isYzm?'yzm_countdown':''}}" bindtap="getYzm">{{yzmtitle}}</button>

/*全局公用样式*/
.yzm_countdown{
font-size:30rpx !important;
color: #ccc !important;
font-weight: unset !important;
}

// xx.js

// pages/special/select/select.js

import check from '../../../utils/common.js'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    uname:'',
    tel:'',
    yzm:'',
    content:'',

    yzmtitle:'获取验证码',//全局固定名称
    isYzm:false,全局固定名称  点击获取验证码更换样式
    iShowErr1:true,
    
	timer:null,//计时器唯一id
    

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },
    onClearModal(){//清除提交信息,计时器
    this.setData({
     	uname:'',
	    tel:'',
	    yzm:'',
	    content:'',
      	yzmtitle:'获取验证码'
    })
    clearInterval(this.data.timer);
  },

  goTop(){
    wx.pageScrollTo({ scrollTop: 0 })
  },

  onContentChange(e){
    let type = e.currentTarget.dataset.type;
    let val = e.detail.value;

    
    switch(type){
      case 'uname':
        this.setData({uname:val});
        break;
        case 'tel':
        this.setData({tel:val});
        break;
        case 'yzm':
        this.setData({yzm:val});
        break;
        case 'content':
        this.setData({content:val});
        break;
        
    }

  },

  getYzm(){
  	let vm = this;
    let tel = vm.data.tel;
   
    if(check.tel(tel,'请输入正确的电话号码')==false ) return false;
    
    let timer=  check.countDown(vm);
    this.setData({timer});
   
  },

  onSubmit(){//在提交时使用封装的公共类   
    let uname = this.data.uname;
    let tel = this.data.tel;
    let yzm = this.data.yzm;
    let con = this.data.content;

    if( check.content(uname,'请输入姓名')==false || check.tel(tel,'请输入正确的电话号码')==false || check.yzm(yzm,'请输入正确的验证码')==false || check.content(con,'请输入采购需求描述')==false  ) return false;
  
    // 进行后端请求,后端请求成功清除计时器
    clearInterval(this.data.timer);
    this.setData({timer:null})
    this.closeParamModal();
  },
  /**
   * 生命周期函数--监听页面隐藏
   * onHide()在小程序生命周期中具有监听小程序隐藏的功能,当切换页面和切换底部菜单栏时将会关闭定时器。
   */
  onHide() {//清除计时器
    clearInterval(this.data.timer);
    this.setData({timer:null})
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    clearInterval(this.data.timer);
    this.setData({timer:null})
  },

  
})

尊重原创转载请注明出处谢谢!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值