当事件由“ESC”键触发时,表单未在keydown事件中提交

时间:2016-11-03 12:59:18

标签: javascript jquery html forms

我需要在点击“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

由于

1 个答案:

答案 0 :(得分:0)

在您的第一个代码段中,只需将event更改为e中的event.preventDefault()