ESC kep关闭弹出窗体

beg*_*ner 2 html javascript jquery onkeypress

我在网上找到了一个代码,帮助我使用ESC按钮关闭弹出对话框.代码如下:

<script type="text/javascript">
 function ESCclose(evt) {
  if (evt.keyCode == 27) 
   window.close();
 }
</script>
Run Code Online (Sandbox Code Playgroud)

onkeypress事件

<body onkeypress="ESCclose(event)">
Run Code Online (Sandbox Code Playgroud)

我尝试在表单标签中使用onkeypress.它无法正常工作,因为我无法使用ESC按钮关闭对话框.有帮助吗?

Ror*_*san 5

问题是因为keypress事件不会触发不可打印的字符(例如退格或转义).

要解决此问题,您可以使用keydown:

function ESCclose(evt) {
  if (evt.keyCode == 27) {
    //window.close();
    console.log('close the window...')
  }
}
Run Code Online (Sandbox Code Playgroud)
<body onkeydown="ESCclose(event)"></body>
Run Code Online (Sandbox Code Playgroud)

正如您使用jQuery标记了问题一样,您可以使用它来更好地分离HTML和JS代码:

$(document).on('keydown', function(e) {
  if (e.keyCode == 27)
    window.close();
});
Run Code Online (Sandbox Code Playgroud)

请注意,具有上述代码on*body元素不需要事件属性.