You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止在输入框中输入波浪号~?求可行的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:12:31