按 enter 时调用函数 onKeyup 事件不起作用

Calling a function onKeyup event not working while pressing enter

这是我的代码

function searchForProductsInPopup(evt) {
     var charCode = (evt.which) ? evt.which : evt.keyCode;
     alert("in");
     if(charCode == 27) {
          closePopup();
     }
     else if(charCode == 13) {
          closePopup();
          return false;
     }
}

HTML代码

<input type="text" 
       class="input-medium focused" 
       id="invoiceSearchKeyWord"
       onkeydown="return searchForProductsInPopup(event);"/>

此函数将在文本框的 keyup 事件上执行,对于所有其他键,我的代码将给出 alert 表示 in。但是当按下 Enter 键时,我没有收到任何警报,而是直接提交了表单,这是为什么?我对 JS 的了解非常有限。谁能解释一下?

submit 事件在您的 keyup 事件之前触发:

<form onsubmit="alert('submitted')">
    <input onkeyup="alert('keyup')"/>
</form>

1. submitted
2. Page navigates

https://jsfiddle.net/DerekL/pvw1dtb7/

如果您正确阻止 submit 事件,您将看到预期的 keyup 事件。像这样:

<form onsubmit="alert('submitted'); event.preventDefault();">
    <input onkeyup="alert('keyup')"/>
</form>

1. submitted, event stopped
2. keyup

https://jsfiddle.net/DerekL/dmpxjt27/