小程序验证码对应的软键盘收起事情处理

  碰见一个小程序的验证码输入,有4个input,输入第一个的时候第二个聚焦,这个时候软键盘就会收起再弹出,很大的一个bug,最后只能手动写一个软键盘,现在可以分享出来,让大家看一看代码:,这是页面完成后的图片,下面代码献上:

html部分:

  

<view class=‘container‘>

<view class=‘note_box‘>

<view class=‘ntb_head‘>请输入您的短信验证码</view>

<view class=‘nt_input‘>

<input type=‘number‘ bindinput=‘inuputNum‘ data-ind="1" focus=‘{{inFocus==0?true:false}}‘ disabled maxlength=‘1‘ value=‘{{num1}}‘></input>

<input type=‘number‘ bindinput=‘inuputNum‘ data-ind="2" maxlength=‘1‘ focus=‘{{inFocus==2?true:false}}‘ disabled value=‘{{num2}}‘></input>

<input type=‘number‘ bindinput=‘inuputNum‘ data-ind="3" maxlength=‘1‘ focus=‘{{inFocus==3?true:false}}‘ disabled value=‘{{num3}}‘></input>

<input type=‘number‘ bindinput=‘inuputNum‘ data-ind="4" maxlength=‘1‘ focus=‘{{inFocus==4?true:false}}‘ disabled value=‘{{num4}}‘></input>

</view>

<view class=‘note_hint‘>验证码已发送到158****0771,请注意查收</view>

<view class=‘note_anmiteTime‘><text>{{anTime}}</text>秒后可从新获取</view>

</view>

<view class=‘numModal‘>

<view>

<view bindtap=‘clickNum‘ data-num=‘1‘>1</view>

<view bindtap=‘clickNum‘ data-num=‘2‘>2</view>

<view bindtap=‘clickNum‘ data-num=‘3‘>3</view>

</view>

<view>

<view bindtap=‘clickNum‘ data-num=‘4‘>4</view>

<view bindtap=‘clickNum‘ data-num=‘5‘>5</view>

<view bindtap=‘clickNum‘ data-num=‘6‘>6</view>

</view>

<view>

<view bindtap=‘clickNum‘ data-num=‘7‘>7</view>

<view bindtap=‘clickNum‘ data-num=‘8‘>8</view>

<view bindtap=‘clickNum‘ data-num=‘9‘>9</view>

</view>

<view>

<view class=‘color_e‘></view>

<view bindtap=‘clickNum‘ data-num=‘0‘>0</view>

<view class=‘color_e‘ bindtap=‘clickNum‘ data-num=‘x‘>X</view>

</view>

</view>

</view>

css部分:

  

.note_box{

background: #fff;

margin: 20rpx 0;

}

.ntb_head{

line-height: 120rpx;

width: 75%;

margin: 40rpx auto;

}

.nt_input{

display: flex;

flex-flow: row;

margin-bottom: 40rpx;

font-size: 80rpx;

width: 80%;

margin: 0 auto;

}

.nt_input input{

border-bottom: 2rpx solid #ddd;

height: 100rpx;

width: 110rpx;

text-align: center;

margin: 0 30rpx;

}

/*提示信息 */

.note_hint{

text-align: center;

color: #999;

line-height: 120rpx;

}

.note_anmiteTime{

text-align: center;

color: #999;

margin-bottom: 50rpx;

}

.note_anmiteTime text{

color: #0a6;

font-size: 36rpx;

}

/*数字键盘 */

.numModal{

position: fixed;

bottom: 0;

left: 0;

right: 0;

width: 100%;

background: #fff;

}

.numModal>view{

display: flex;

flex-flow: row;

line-height: 120rpx;

border-bottom: 2rpx solid #ccc;

}

.numModal>view>view{

width: 33.33%;

text-align: center;

font-size: 40rpx;

border-right: 2rpx solid #ddd;

border-radius: 5rpx;

}

.color_e{

background: #f1f1f1;

}

js部分:

  

data: {

// input获取的数据

inputNumber:"",

inFocus:1,

//验证码输入是否正确

verifyCode:1234,

num1: "",

num2: "",

num3: "",

num4: "",

anTime:60,//倒计时

},

/**

* 生命周期函数--监听页面加载

*/

onLoad: function (options) {

this.intTime();

},

intTime:function(){

var that=this;

var time = this.data.anTime;

var int = setInterval(function () {

time--;

that.setData({

anTime:time,

})

// console.log(time)

if (time == 0) {

clearInterval(int);

wx.navigateBack();

}

}, 1000)

},

// 监听自定义键盘的输入

clickNum:function(e){

var that=this;

//获取点击的数字

var num = e.currentTarget.dataset.num;

//获取当前哪一个input焦点

var n1,n2,n3,n4;

n1 = this.data.num1;

n2 = this.data.num2;

n3 = this.data.num3;

n4 = this.data.num4;

if (num==‘x‘){

this.setData({

num1: ‘‘,

num2: ‘‘,

num3: ‘‘,

num4: ‘‘,

})

}else{

if (n1 == "") {

this.setData({

num1: num,

})

} else if (n2 == "") {

this.setData({

num2: num,

})

} else if (n3 == "") {

this.setData({

num3: num,

})

} else if (n4 == "") {

this.setData({

num4: num,

})

var newCode = that.data.verifyCode;

var number = that.data.num1 + that.data.num2 + that.data.num3 + that.data.num4;

//相等,验证成功

console.log(number)

if (number == newCode) {

wx.redirectTo({

url: ‘../sueess/sueess‘,

})

} else {

//失败,清空input上面的数值,从新聚焦第一个

wx.showModal({

title: ‘信息‘,

content: ‘验证码输入错误,请从新输入‘,

showCancel: false,//不显示取消按钮

success: function () {

that.setData({

num1: "",

num2: "",

num3: "",

num4: "",

inFocus: 1,

})

},

})

}

}

}

},

// 监听input的输入

inuputNum:function(e){

// 获取当前input的下标

var index, newNumber, number,that;

that=this;

index = e.currentTarget.dataset.ind;

newNumber = e.detail.value;

if (index==1){

this.setData({

num1: newNumber,

inFocus:2

})

// newIndex = 2;

} else if (index == 2) {

this.setData({

num2: newNumber,

inFocus:3

})

// newIndex = 3;

} else if (index == 3) {

this.setData({

num3: newNumber,

inFocus:4

})

// newIndex = 4;

} else if (index == 4) {

that.setData({

num4: newNumber

})

var newCode = this.data.verifyCode;

number = that.data.num1 + that.data.num2 + that.data.num3 + that.data.num4;

//相等,验证成功

console.log(number)

if (number == newCode){

wx.redirectTo({

url: ‘../sueess/sueess‘,

})

}else{

wx.showModal({

title: ‘信息‘,

content: ‘验证码输入错误,请从新输入‘,

showCancel:false,//不显示取消按钮

success:function(){

that.setData({

num1: "",

num2: "",

num3: "",

num4: "",

inFocus:1,

})

},

})

}

}

},

技术在于讨论中进步:http://www.cnblogs.com/laiqiangjin

原文地址:https://www.cnblogs.com/laiqiangjin/p/9212556.html

时间: 2024-10-16 23:00:44

小程序验证码对应的软键盘收起事情处理的相关文章

移动端软键盘收起监听

在移动端进行表单操作时,时常需要监听键盘的收起,从而完成输入的处理.但浏览器并没有提供直接监听软键盘收起的接口,那该如何进行监听能?这里提供监听的兼容方案. 在安卓下,大部分浏览器在软键盘收起时,会触发resize事件,可以以此来监听:但ios操作系统并不会触发该事件,但大部分浏览器会触发表单的blur事件,所以可以以此为监听点.浏览器的软件盘监听状况如下表所示:   软键盘收起事件监听表 所以,通过监听onResize.onBlur可以实现移动端主流浏览器的软键盘收起操作:无法即时监听到的,可

小程序input自动聚焦拉起键盘

微信官方提供了两种自动聚焦的方法 1,auto-focus 接受boolean值:默认为false:只需设置为true即可 自动聚焦,拉起键盘:不过官方的提示即将废弃,所以能不用还是不要用 2,focus 接受boolean值:默认为false:只需设置为true即可 获取焦点(推荐使用) 3,如果想改变键盘右下角文字 confirm-type:值为search时,右下角文字为搜索 官方文档链接可以选自己想要的值 https://developers.weixin.qq.com/miniprog

Android 另类方法监听软键盘的弹出收起事件

http://www.cnblogs.com/csonezp/p/5065624.html 最近做的项目碰到个问题,a界面是fragment+recyclerview,b界面带个edittext,并且会自动获得焦点弹出软键盘.由a界面进入b界面,再结束b界面返回a界面,就会在a界面上留下一片和软键盘大小相同的灰色区域,具体原因搞了很久也不清楚.但是问题总是要解决的,我在a的fragment上折腾了半天,始终没什么用.然后就想着在b界面折腾折腾,关闭activity的时候先收起挼键盘,软键盘收起完

&lt;Android&gt;监听软键盘打开收起事件(软键盘自带收起按钮)

最近在公司开发cocos2dx上的android输入框控件,遇到软键盘的事件监听,通常软键盘的收起方式大致3种: 1.点击软键盘右下角的Return按钮(系统收起) 2.输入框焦点时按返回按钮(系统收起) 3.点击软键盘和输入框的外部(自发收起) 4.点击软键盘自带的收起按钮(软键盘收起) 前三种事件可以监听,方式都比较简单 1.点击软键盘右下角的Return按钮 给输入框设置监听 editText.setOnEditorActionListener(new OnEditorActionList

小程序调取数字键盘,没有小数点解决办法

input框 有type属性这个大家都知道:比如text number  checkbox等常用的type值: 当type为number时,在小程序里调取的数字键盘是没有小数点的:应该改为:digit(哈哈,我自己开发的时候也没有注意这个): 下面简单记录一下 number:数字键盘(无小数点) idcard:数字键盘(无小数点.有个 X 键) digit:数字键盘(有小数点)注意:number 是无小数点的,digit 是有小数点的 原文地址:https://www.cnblogs.com/y

微信小程序发送验证码短信SDK及文档

微信小程序验证码版SDK增加了对短信验证码的管理,开发者无需生成管理验证码,该SDK可直接生成.存储.发送.校验. 官网 SDK下载地址 demo ? 1.安装下载后的SDK只包含一个zhenzisms.js文件,可直接放在utils文件夹中,然后通过require引入,如下: var zhenzisms = require('../../utils/zhenzisms.js');2.配置域名在微信公众平台-小程序管理中配置域名https://smsdeveloper.zhenzikj.com,

借助云开发实现小程序短信验证码的发送

最近在做小程序验证码登陆时,用到了短信发送验证码的需求,自己也研究了下,用云开发结合云函数来实现验证码短信发送还是很方便的. 老规矩,先看效果图 这是我调用腾讯云的短信平台发送的登陆验证码.核心代码其实只有下面这么多是不是感觉实现起来特别简单,怎么说呢,我们代码调用其实就这么几行,就可以实现短信的发送,但是腾讯云短信模板的审核比较繁琐,还有我们先去申请短信模板,短信模板审核通过后才可以使用.我们就先来说代码实现,然后再带大家简单的学习下短信模板的申请. 一,安装node类库 其实我们这里用到了云

攻克Android软键盘的疑难杂症

系列教程:推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onLayout源码详尽分析 自定义View系列教程04–Draw源码分析及其实践 自定义View系列教程05–示例分析 自定义View系列教程06–详解View的Touch事件处理 自定义View系列教程07–详解ViewGroup分发Touch事件 自定义View系列教程08–滑动冲突的产生及其处理 在Activity

Android动态改变布局,比如登陆弹出软键盘,登陆框上移(转载)

Android动态改变布局 http://www.cnblogs.com/angeldevil/p/3836256.html 遇到这么个需求,先看图:      其实是一个软件的登录界面,初始是第一个图的样子,当软键盘弹出后变为第二个图的样子,因为登录界面有用户名.密码.登录按钮,不这样的话软键盘弹出后会遮住登录按钮(其实之前的实现放到了ScrollView里面,监听软键盘弹出后滚动到底部,软键盘隐藏后滚动到顶部,也是可以的). 最简单的方法就是多加几个冗余的View,根据软键盘的状态隐藏不需要