Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按ENTER键时提交表单的Javascript_Javascript_Submit_Onkeydown - Fatal编程技术网

按ENTER键时提交表单的Javascript

按ENTER键时提交表单的Javascript,javascript,submit,onkeydown,Javascript,Submit,Onkeydown,我有一个按钮,其代码如下所示: <a href="javascript:document.forms['ContactForm'].submit();" onClick="return ValidateContactForm();" class="button"><span>Submit</span</a> Submit您需要使用“onkeypress”事件。根据您在收听Enter键时希望焦点所在的位置 document.onkeypress = fu

我有一个按钮,其代码如下所示:

<a href="javascript:document.forms['ContactForm'].submit();" onClick="return ValidateContactForm();" class="button"><span>Submit</span</a>
Submit您需要使用“onkeypress”事件。根据您在收听Enter键时希望焦点所在的位置

document.onkeypress = function keypressed(e){
  var keyCode = (window.event) ? e.which : e.keyCode;
  if (keyCode == 13) {
    if(ValidateContactForm())
      document.forms['ContactForm'].submit();
  }      
}

(针对IE per更新)

只是好奇,为什么不使用
元素?当按下Return键时,HTML元素自动提交嵌套在其中的表单,而不需要JavaScript。你也可以像其他元素一样,用CSS随心所欲地设计它。

Re:ltiong\u sh的建议 以上内容不适用于Internet Explorer,至少IE8及以下版本。
对于IE8及以下版本,以下各项将起作用:

document.onkeypress = function keypressed(){
  if (window.event.keyCode == 13) {
    // Sumbit code
  }      
}
然而,这并不重要。重要的是,这种方法非常糟糕:
1) 当您在输入文本区域内或在页面中时(取决于使用的方法),每个按键都会受到监控!(这可能会占用CPU时间)
2) 按Enter键(或其他热键)将发布具有相同URL的新页面!也就是说,每次按Enter键时,页面都会在历史中堆叠起来
3) 按Enter键后,输入区域内的文本将恢复为默认值(原始文本)!! 4) 提交的文本将添加到地址区域的URL中,如下所示:

到目前为止,我还没有找到任何方法来克服这些缺点。。。(这是我今天第一次搜索如何按Enter键提交文本(作为单击按钮的替代方法)


是否有人建议一种更有效的方法?

哪种表格?请包括(表格的)相关HTML。看,我需要在按钮上添加一个onkeypress吗?或者我应该把它放在页面的标题部分,它就会工作吗?不,你不需要设置按钮。上面的代码将事件作为一个整体附加到文档中。你真的可以将它放在任何地方(在脚本标记中),它应该会工作。有些人正在标记“不是答案”.这可能是真的,但由于注释系统不适合代码片段,请在这里放松一下。