0

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

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

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

4

3 回答 3

1

只是好奇,你为什么不使用<input type="submit" />元素?当按下 Return 键时,该 HTML 元素会自动提交其嵌套的表单,而无需 JavaScript。就像任何其他元素一样,您还可以使用 CSS 将其设置为您喜欢的样式。

于 2012-05-02T16:32:43.077 回答
1

您需要使用“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 更新,每个JavaScript KeyCode 值在 Internet Explorer 8 中为“未定义”

于 2012-05-02T16:19:15.210 回答
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)回车后输入区域内的文字恢复为默认(原来的)!!4) 提交的文本被添加到地址区的 URL 中,如 ?

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

有没有人提出更有效的方法?

于 2014-03-03T19:54:11.257 回答