1

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

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

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

谢谢。

4

5 回答 5

5

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

于 2013-07-10T14:35:42.517 回答
2

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

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


});

您还可以使用站点轻松查找有关不同键的按键/按键等信息。

希望这可以帮助!

于 2013-07-10T14:40:50.690 回答
1

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

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

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

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

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

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

*如果你正在使用oninput你不需要if前面提到的事件。

演示oninput事件的小提琴:这里

于 2013-07-10T14:49:36.113 回答
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>
于 2013-07-10T14:35:17.843 回答
0

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

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

祝你好运!

于 2013-07-10T18:09:03.700 回答