按ENTER时提交表单的Javascript

时间:2012-05-02 15:43:31

标签: javascript submit onkeydown

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

<a href="javascript:document.forms['ContactForm'].submit();" onClick="return ValidateContactForm();" class="button"><span>Submit</span</a>

我需要哪些JavaScript代码才能在按键盘上的“Enter”键时提交表单?

3 个答案:

答案 0 :(得分:1)

您需要使用“onkeypress”事件。取决于您在收听Enter键时希望Focus的位置..

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

(针对每个JavaScript KeyCode Values are "undefined" in Internet Explorer 8的IE更新)

答案 1 :(得分:1)

好奇,你为什么不使用<input type="submit" />元素?当按下Return而不需要JavaScript时,该HTML元素会自动提交嵌套的表单。您也可以像使用任何其他元素一样使用CSS来设置它的内容。

答案 2 :(得分:0)

Re: ltiong_sh 的建议 以上版本不适用于Internet Explorer,至少IE8及以下版本 对于IE8及更低版本,以下内容将起作用:

document.onkeypress = function keypressed(){
  if (window.event.keyCode == 13) {
    // Sumbit code
  }      
}

但是,这不重要。重要的是这种方法非常糟糕:
1)当您在输入文本区域内或每当您在页面中时(根据使用的方法),每个按键都会被监控! (这可能会窃取CPU时间)
2)使用相同的URL按Enter(或其他热键)发出新页面!也就是说,每次按下Enter键时,页面都会在历史记录中堆叠起来!!! 3)按Enter键后,输入区域内的文本恢复为默认值(原始文本)!! 4)提交的文本被添加到地址区域中的URL,如?

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

是否有人建议采用更有效的方法?