如何防止输入波形

时间:2018-04-09 11:28:07

标签: javascript jquery html

我想阻止在输入中键入代字号~的可能性 以下是我的代码片段:



$('#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" />
&#13;
&#13;
&#13;

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

1 个答案:

答案 0 :(得分:4)

有些人说你的代码有效,有些人不知道。

因为,&#34;〜&#34;没有绑定在每个键盘布局上的相同键上 能够阻止写(或粘贴)的可能性&#34;〜&#34;对于每个人,我会做这样的事情:

&#13;
&#13;
$('#myInput').on("keyup", function(e) {
  this.value = this.value.replace(/~/g, '');
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myInput" />
&#13;
&#13;
&#13;

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

⋅⋅⋅

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

&#13;
&#13;
$('#myInput').on("keyup", function(e) {
  this.value = this.value.replace(/[~^!]/g, '');
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myInput" />
<p>Forbidden: ~ ^ !</p>
&#13;
&#13;
&#13;

我希望它有所帮助。