我想阻止在输入中键入波浪号~的可能性。
这是我的代码片段:



$('#myInput').on("keydown", function(e) {
  if (e.shiftKey && e.keyCode === 192) {
    e.preventDefault();
    console.log(e.keyCode);
  }
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input id="myInput" />





我对keydownkeypressedkeyup尝试了与上述相同的操作,但是它没有按预期工作。
有没有人有一个简单的解决方案?

最佳答案

有人说您的代码有效,有人说无效。

因为在每个键盘布局上的同一键上都没有绑定“〜”。
为了能够阻止为所有人编写(或粘贴)“〜”的可能性,我将执行以下操作:



$('#myInput').on("keyup", function(e) {
  this.value = this.value.replace(/~/g, '');
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myInput" />





每次尝试插入一个字符时,我们都可以看到“〜”字符已被删除,但我认为这不是问题。相反,我认为这将帮助用户理解他不能使用该字符,而无需怀疑其键盘的功能是否良好。
可以使用input代替keyup来避免这种行为,但是出于上述原因,我个人更喜欢这种方式。

⋅⋅⋅⋅

通过修改正则表达式可以添加其他一些禁止的字符:



$('#myInput').on("keyup", function(e) {
  this.value = this.value.replace(/[~^!]/g, '');
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myInput" />
<p>Forbidden: ~ ^ !</p>





希望对您有所帮助。

关于javascript - 如何防止输入中出现波浪号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49731857/

10-12 21:35