首页 文章

如何禁止输入按钮触发onkeyup事件?

提问于
浏览
1

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

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

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

谢谢 .

5 回答

  • 0

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

  • 4

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

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

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

    希望这可以帮助!

  • 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>
    
  • 1

    onkeyup 事件在使用ENTER关闭它时发出警报后触发,因为警报已关闭 onkeydown ,因此将触发's closed and the document regains focus, when you release the key, the textbox' s onkeyup 事件 .

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

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

    当用户更改文本框的值时,将触发 oninput 事件 .

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

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

    *如果你正在使用 oninput 事件,则不需要之前提到的 if .

    演示 oninput 事件的小提琴:Here

  • 2

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

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

    祝好运!

相关问题