阻止@进入输入字段?

时间:2016-08-08 08:21:11

标签: javascript jquery

我想阻止@进入input。但它不起作用,任何想法为什么?

$(function() {
  $(document).on('keyup', '[placeholder="x"]', function() {
    if (event.keyCode === 64) {
      event.preventDefault();
    }
  });
})

https://jsfiddle.net/r82wtea3/2/

5 个答案:

答案 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;
&#13;
&#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以示例为准。