按Enter键时,调用函数onKeyup事件不起作用

时间:2017-09-08 08:58:52

标签: javascript html enter onkeyup

这是我的代码

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 。但是当按下Enter键时,我没有收到任何警报,而且直接提交了表单,为什么会这样?我对JS的了解非常有限。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:3)

submit事件之前触发keyup事件:

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

1. submitted
2. Page navigates

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

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

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

1. submitted, event stopped
2. keyup

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