使用jQuery实现密码框输入字符即时显示,快速输入字符重叠如何解决?
解决密码输入插件快速输入字符重叠问题
问题根因
该插件默认采用keyup事件触发字符显式转掩码逻辑,快速输入时短时间触发大量事件,前序字符的渲染和掩码替换逻辑还未执行完成就触发了新的输入处理,导致字符渲染堆叠。
可用解决方法
- 方法1:修改插件的事件监听逻辑,替换单一
keyup监听为input事件监听,同时添加200~300ms的防抖处理,避免高频触发逻辑冲突
找到插件源码中的事件绑定部分,将原有的keyup绑定替换为以下逻辑:let timer = null; $input.on('input', function() { clearTimeout(timer); timer = setTimeout(() => { // 原有插件处理字符显示、转掩码的逻辑粘贴到此处即可 }, 250); }) - 方法2:调用插件时主动设置显式字符的停留时长,拉长转掩码的间隔避免重叠,调用代码调整为:
$("input[type=password]").mobilePassword({ showDuration: 300 // 单位为毫秒,可根据实际输入速度调整,插件默认值一般为150ms }); - 方法3:调整输入框的字符渲染逻辑,禁用输入框的默认文本预测、自动完成属性,避免系统自带的输入补全逻辑和插件渲染冲突,输入框标签修改为:
<input name="password" type="password" class="input" size="10" autocomplete="off" autocorrect="off" spellcheck="false">
内容的提问来源于stack exchange,提问作者Megha Trivedi
相关产品推荐
相关产品推荐

