我想阻止@
进入input
。但它不起作用,任何想法为什么?
$(function() {
$(document).on('keyup', '[placeholder="x"]', function() {
if (event.keyCode === 64) {
event.preventDefault();
}
});
})
答案 0 :(得分:1)
您还需要将参数event
传递给函数:
$(document).on('keypress', '[placeholder="x"]', function(event) { /*...*/ });
我建议您使用event.which
代替event.keyCode
以获得更好的兼容性。这是你的updated fiddle。我使用keypress
事件代替keyup
。
答案 1 :(得分:0)
$(function() {
$(document).on('keydown', '[placeholder="x"]', function(event) {
if (event.keyCode === 50) {
event.preventDefault();
}
});
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" placeholder="x">
&#13;
将您的功能更改为以下内容:
$(function() {
$(document).on('keydown', '[placeholder="x"]', function(event) {
if (event.keyCode === 50) {
event.preventDefault();
}
});
})
答案 2 :(得分:0)
当return false;
为特定值时,keypress
事件可event.which
$(function() {
$(document).on('keypress', '[placeholder="x"]', function(event) {
if(event.which === 64){
return false;
}
});
})
或多或少杀掉事件..
这是fiddle ..
答案 3 :(得分:0)
在<div class="row navbar-fixed-top">
<div class="row">
<div class="col-24">
<ul>
<li><a class="active">Home</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact">Contact</a></li>
<li style="float:right"><a class="active" href="#about">hom</a></li>
</ul>
</div>
</div>
<div class="row">
<div class="col-1">
<!--
<div class="nv height-100">
<ul>
<li><a>hom</a></li>
<li><a class="active" href="#home">hom</a></li>
</ul>
</div>
-->
<div class="nv">
<ul>
<li><a href="#home">Left</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact">Cont</a></li>
<li><a href="#about">About</a></li>
</ul>
</div>
</div>
<div class="col-22">
whatever ,here just the testing text.
</div>
<!--
<div>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#about">About</a></li>
</ul>
</div>
-->
<div class="col-1">
<div class="nv">
<ul>
<li><a href="#home">Right</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact">Cont</a></li>
<li><a href="#about">About</a></li>
</ul>
</div>
</div>
</div>
上,keyup
不是单个密钥。它更像是Mac上的@
或ALT+Q
。因此,最好的方法是在值中检查CMD+L
是否存在input
并手动检查。否则,将@
与keypress
一起用作64
。
keyCode
<强> Working example. 强>
答案 4 :(得分:0)
如果用户使用鼠标粘贴@
,则无法触发按键类型事件,因此无法进行按键操作。您也无法收听一个特定的keyCode
,因为有多种方法可以跨不同平台和键盘布局输入@
。
您应该正在侦听更改类型事件,例如input,并将任何出现的@
替换为空字符串。这是一个例子:
document.querySelector('input').addEventListener('input', function() {
this.value = this.value.replace(/@/g, '');
});
Here's a pen以示例为准。