如何禁用Enter按钮以触发onkeyup事件?

时间:2013-07-10 14:30:27

标签: javascript jquery asp.net

在我的asp.net解决方案中,我有一个文本输入框和一个搜索按钮。文本输入字段上有一个onkeyup jquery事件,因此当用户按下某个键时,它会自动单击搜索按钮。您也可以手动点击按钮。

但我注意到的是,如果您正在键入,然后按ENTER键,它将触发on onkeyup事件。如果按下ENTER键,如何禁用该功能,或者可能检测到它是否为ENTER键,然后有if语句或其他内容。

正在发生的另一件事是,如果输入框中的文本出现问题,我会显示一个警告消息框。然后,如果按ENTER关闭该框,它将以某种方式触发onkeyup事件,再次显示警告框...

感谢。

5 个答案:

答案 0 :(得分:4)

在函数中的所有操作前添加if (evt.keyCode != 13):)

答案 1 :(得分:2)

您可以在事件上使用.which来确定按下的键的KeyCode(ENTER = 13):

$('#input').keyup(function(event) {
    if(event.which == 13)
    {
         //respond to enter keypress
    }


});

此外,您可以使用this网站轻松查找有关不同密钥的密钥/缩小信息等信息。

希望这有帮助!

答案 2 :(得分:1)

希望这有帮助。

<script type="text/javascript"> 

function stopRKey(evt) { 
  var evt = (evt) ? evt : ((event) ? event : null); 
  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
  if ((evt.keyCode == 13) && (node.type=="text"))  {return false;} 
} 

document.onkeypress = stopRKey; 

</script>

答案 3 :(得分:1)

当您使用ENTER关闭它时发出警报后触发onkeyup事件,因为警报已关闭onkeydown,因此在关闭并且文档重新获得焦点后,当您释放密钥时,将触发文本框的onkeyup事件。

如前所述,您可以添加if (event.keyCode != 13)以测试ENTER键是否不是按下的键。

更好的解决方案是使用不同的事件。 而不是onkeyup,请使用oninput

当用户更改文本框的值时会触发oninput事件。

只有当用户在文本框中写入内容或删除某些内容时,才会触发该事件。按下ENTER键时,或按下任何其他不改变文本框值的键(如箭头键)时,它不会熄灭。

oninput事件可能是您正在搜索的功能的更好选择。

*如果您使用oninput活动,则不需要之前提及的if

演示oninput事件的小提琴:Here

答案 4 :(得分:0)

为了将来的参考,我发现了这个有用的网站:

http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

祝你好运!