小程序中没有关于input禁止粘贴的功能,通过监听bindinput来实现禁止粘贴功能
使用场景 一般都是 在type=number 或者 其他 不想让用户 通过复制的效果 来输入错误的数据
思路:
1、bindinput 监听每次输入事件,通过对比当前输入内容长度和上次输入内容长度做判断 如果 |当前内容长度 - 上次内容长度| != 1 ,则表示用户不是手动输入的,这时候清空输入框即可
2、|当前内容长度 - 上次内容长度| == 1 ,但是用户通过复制输入了 不符合预期的内容 ,这时候用过正则来判断内容是否合法
3、小程序bindinput 事件中 return是输入框的内容
核心代码(例子是判断手机号)
//判断当前长度和上次长度对比
if (Math.abs(e.detail.value.length - phoneAgain.length) != 1) {
this.setData({
phoneAgain: ''
})
return ''
} else {
//正则判断内容是否合法
let reg = /^[0-9]*$/
if (!reg.test(e.detail.value)) {
this.setData({
phoneAgain: ''
})
return ''
}
}