<input type="text" maxlength="10" confirm-type="done" model:value="{{bookName}}" placeholder="请输入"></input>
如上,我限制输入框最长可输入5位字符,在微信开发工具调试是没问题的,在真机上,当我输入中文时,拼音也被限制了,像我习惯一次性打完一句话或者四五个字,结果拼音也被限制只能输入5个以内,这就很难受
应该是输入中文时,拼音会暂时出现在输入框内,然后就被误判成是输入框内的内容了。
我在微信开发社区也发现了有很多人都遇到这个问题,但是技术人员都没有相关的正面回复
bindchange
后来有位大佬让我试一下change事件,
最终利用给输入框绑定change事件来手动完成长度的限制,从效果上来看还是不错的
<input type="text" bindchange="chan" confirm-type="done" model:value="{{bookName}}" placeholder="请输入"></input>
chan (e) {
let value = e.detail.value
if (value.length < 11) return
// 在长度超过十位时,对字符串进行截取,并重新赋值
value = value.substr(0, 10)
this.setData({
bookName: value
})
}
手动改变输入框绑定的值并不会再次触发change事件,亲测有效,希望能帮到大家
不要停止思考,但也不要钻死胡同,诸位,共勉