遇到的问题场景:在页面要得到用户信息,一般使用<input/>,但当输入类似qq等有数据类型限制时,要判断输入数据类型,这时就出现一个问题:不论用户在input中输入什么数据类型,e.detail.value得到的值都是字符串。这时typeof,instanceof 是没有用的,用他们判断得到的都是false
//js
bindQQ:function(e){
if(typeof(e.detail.value)!=='number'){
console.log('请输入正确的qq格式'); // 总是typeof(e.detail.value)=='string'
}else {
console.log('格式正确');
}
}
//html
<view class="tab-item border-bottom" hover-class="tab-item-hover">
<text class="tab-text"> QQ</text>
<input name='input' class="tab-info" type="text" value="{{qq}}" bindblur="bindQQ" />
</view>
所以考虑正则,记录代码
//js
bindQQ:function(e){{
// 判断一串字符是不是全部是数字
var rex = /^[0-9]+$/;//正则表达式
var flag = rex.test(e.detail.value);//通过表达式进行匹配
if(!flag){
wx.showToast({
title: '请输入正确的qq格式',
icon: 'loading',
duration: 1000,
mask:true
})
this.setData({
qq:null
})
}else{
this.setData({
qq:e.detail.value
})
}
},
//html
<view class="tab-item border-bottom" hover-class="tab-item-hover">
<text class="tab-text"> QQ</text>
<input name='input' class="tab-info" type="text" value="{{qq}}" bindblur="bindQQ" />
</view>