微信小程序 input输入及动态设置按钮的实现
微信小程序input输入及动态设置按钮的实现
【需求】实现当手机号已填写和协议已勾选时,“立即登录”按钮变亮,按钮可点击;若有一个不满足,按钮置灰,不可点击;实现获取短信验证码,倒计时提示操作;对不满足要求内容进行toast弹窗提示。
手机号 图形验证码 验证码 {{captchaText}} 已阅读并同意 《用户使用协议》 立即登录 {{toastText}} 
js
//获取全局应用程序实例对象
constapp=getApp()
Page({
data:{
//toast默认不显示
isShowToast:false,
mobile:'',
imgCode:'',
code:'',
//inviteCode:'',
errorContent:'请输入手机号',
timer:60,
captchaText:'获取验证码',
captchaSended:false,
isReadOnly:false,
capKey:'',
sendRegist:false,
imgCodeSrc:'',
phoneAll:false,
checkAgree:true,
checkboxValue:[1],
},
//显示弹窗
showToast(txt,duration=1500){
//设置toast时间,toast内容
this.setData({
count:duration,
toastText:txt
});
var_this=this;
//toast时间
_this.data.count=parseInt(_this.data.count)?parseInt(_this.data.count):3000;
//显示toast
_this.setData({
isShowToast:true,
});
//定时器关闭
setTimeout(function(){
_this.setData({
isShowToast:false
});
},_this.data.count);
},
//双向绑定mobile
mobileInput(e){
this.setData({
mobile:e.detail.value
});
if(this.data.mobile.length===11){
this.setData({
phoneAll:true
});
}elseif(this.data.mobile.length<11){
this.setData({
phoneAll:false
});
}
},
//双向绑定img验证码
imgCaptchaInput(e){
this.setData({
imgCode:e.detail.value
});
},
//双向绑定sms验证码
smsCaptchaInput(e){
this.setData({
code:e.detail.value
});
},
//同意协议
checkboxChange(e){
this.data.checkboxValue=e.detail.value;
if(this.data.checkboxValue[0]==1){
this.setData({
checkAgree:true
});
}else{
this.setData({
checkAgree:false
});
}
},
//获取短信验证码
getSMS(){
varthat=this.data;
if(!that.mobile){
this.showToast('请输入手机号');
}elseif(that.mobile.length!=11||isNaN(that.mobile)){
this.showToast('请输入正确手机号');
}
elseif(that.imgCode.length!=4){
this.showToast('请输入正确图片验证码');
}
else{
if(that.captchaSended)return;
this.setData({
captchaSended:true
})
app.api.getSMSByMobileAndCaptcha({
mobile:that.mobile,
capKey:that.capKey,
code:that.imgCode,
type:1
}).then((result)=>{
this.showToast(result.message);
if(result.code!=1){
this.getImgCode();
this.setData({
captchaSended:false,
});
}else{
varcounter=setInterval(()=>{
that.timer--;
this.setData({
timer:that.timer,
captchaText:`${that.timer}秒`,
isReadOnly:true
});
if(that.timer===0){
clearInterval(counter);
that.captchaSended=false;
that.captchaText='获取验证码';
this.setData({
timer:60,
captchaText:'获取验证码',
captchaSended:false
})
}
},1000);
}
});
}
},
//获取图形码
getImgCode(){
varcapKey="zdx-weixin"+Math.random();
this.setData({
imgCodeSrc:"http://prezdx.geinihua.com/invite/WeChat/verify?capKey="+capKey,
capKey:capKey
});
},
//用户使用协议
xieyi(){
wx.navigateTo({
url:'../userXieyi/userXieyi'
})
},
//注册
regist(){
varthat=this.data;
if(!that.checkAgree||!that.phoneAll){
return
}
//sessionCheck为1,目的是防止微信code码先于session过期
varcode=wx.getStorageSync('wxCode');
varsessionCheck=wx.getStorageSync('sessionCheck');
wx.setStorageSync('mobile',that.mobile);
if(!that.mobile){
this.showToast('请输入手机号');
}elseif(that.mobile.length!=11||isNaN(that.mobile)){
this.showToast('请输入正确手机号');
}elseif(that.code.length!=6){
this.showToast('请输入正确验证码');
}else{
wx.showLoading({
title:'加载中...',
});
app.api.loginByCaptcha({
mobile:that.mobile,
smsCode:that.code,
code:code,
sessionCheck:sessionCheck,
}).then((res)=>{
wx.hideLoading();
if(res.code==2||res.code==1){
//注册成功
wx.setStorageSync('token',res.businessObj.token);
wx.setStorageSync('userId',res.businessObj.userId);
this.sucessCb(res);
app.globalData.isLogin=true;//设置为登录成功
}else{
this.showToast(res.message);
}
});
}
},
//成功回调
sucessCb(res){
wx.redirectTo({
url:'/pages/index/index'
})
},
onLoad:function(){
this.getImgCode();
varthat=this;
if(wx.getStorageSync('mobile')){
that.setData({
mobile:wx.getStorageSync('mobile'),
})
}
if(this.data.mobile.length===11){
this.setData({
phoneAll:true
});
}
},
})
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
