如何阻止在输入框中输入波浪号~?求可行的JavaScript解决方案
嘿,我懂你这会儿的困扰——想拦着输入框不让输入波浪号~,但试了keydown、keypress、keyup都没达到预期效果是吧?别着急,给你几个简单好用的解决方案:
方案1:直接检测按下的键(推荐,现代浏览器友好)
不用纠结键码和shift键的组合,直接通过e.key判断按下的是不是波浪号,逻辑更直观,兼容性也拉满:
$('#myInput').on("keydown", function(e) { if (e.key === '~') { e.preventDefault(); // 阻止默认输入行为 console.log('已阻止波浪号输入'); } });
这个方法的好处是,不管用户用什么键盘布局,只要按下的键对应波浪号,就能精准拦截,完全避开了键码在不同浏览器/设备上的兼容性坑。
方案2:针对老浏览器的字符码检测
如果需要兼容一些比较旧的浏览器,可以用keypress事件结合字符的ASCII码来判断(波浪号的ASCII码是126):
$('#myInput').on("keypress", function(e) { // e.which会返回按下字符的ASCII码 if (e.which === 126) { e.preventDefault(); console.log('已阻止波浪号输入'); } });
额外补充:处理粘贴等非键盘输入场景
上面的方法只能拦截键盘输入,如果用户通过右键粘贴、快捷键粘贴把波浪号放进去,就失效了。可以再加个input事件监听,实时清理输入框里的波浪号:
$('#myInput').on("input", function() { // 全局替换所有波浪号为空字符串 $(this).val($(this).val().replace(/~/g, '')); });
把这几个方法结合起来,不管是键盘输入还是粘贴,都能彻底阻止波浪号出现在输入框里啦!
内容的提问来源于stack exchange,提问作者Patryk Kubacki
相关产品推荐
相关产品推荐

