【问题标题】:Form not submited on keydown event when event is triggered by 'ESC' key当事件由“ESC”键触发时,表单未在 keydown 事件上提交
【发布时间】:2017-03-17 01:48:57
【问题描述】:

我需要在点击“ESC”键时提交表单。我有以下代码:

<form id="testForm" name="testForm" method="post" action=""  >
   <input name="givenAnswer" id="realInput"  value="" type="text" onclick="doSubmit()" autofocus>
</form>

<script>
   document.getElementById('realInput').onkeydown = function(e){
       if(e.keyCode == 27){
           event.preventDefault();
           document.testForm.submit();
        }
   };
</script>

但这不能正常工作(我尝试使用 FF 47.0.1): 如果我在输入字段中输入文本,然后按 ESC 键,则不会提交表单。仅当我在按下 ESC 键之前单击鼠标输入的输入时,才在 ESC 键上提交表单(这仅在脚本中排除行 'event.preventDefault();' 时才有效)。但这不是预期的行为。

这个脚本也是如此:

<script>
    var el = document.getElementById("realInput");
    el.onkeydown = function(event) {
       if (event.keyCode == 27) {
           document.testForm.submit();
       }
    };
</script>

有人知道有什么问题可以告诉我解决办法吗?

我也发现了这些具有类似问题的链接,但那里提出的解决方案对我不起作用:

location.reload doesn't reload the page when I'm using it in keyDown event handler when ESC is pressed. Only in FF

https://bugs.jqueryui.com/ticket/4922

谢谢

【问题讨论】:

  • 试试e.keyCode == 27,而不是e.which == 27
  • 不,不是这样的!命令'document.testForm.submit();'已达到,问题是它没有效果。

标签: javascript jquery html forms


【解决方案1】:

在您的第一个 sn-p 中,只需将 event.preventDefault() 中的 event 更改为 e

【讨论】:

  • 非常感谢您的指正。在尝试了一整天的数百次更改和修改后,我无法正确应用最后一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多