如何禁用按下回车键时的表单提交?

5
我有一个在按下回车键时触发的js事件,它运行良好。但是在该事件之后,它还会提交具有提交按钮的表单。如何阻止在上一个按键事件之后该提交按钮获得焦点?
编辑:我不希望提交按钮在按下回车键时提交,只允许在点击时提交。

1
好的,将您的提交替换为按钮。所以,不要使用<input type="submit" ...>,而是使用<input type="button" ...>并将一个onclick事件附加到它上面。在onclick处理程序中,处理相关操作并调用表单的submit()方法即可。 - nc3b
1
我觉得这值得重复:我强烈反对这种非标准行为——除非你有一个非常好的、非常具体的用例,这个功能必须被改变。除此之外,这里的答案是正确的:你的keypress事件处理程序应该简单地返回“false”。 - anonymous coward
@anonymouscoward - 许多嵌入式或类似终端的系统没有用于在字段之间移动的制表键。用户已经习惯了在输入字段数据后按ENTER键以前进到下一个字段。我同意这不是最优解,但事实就是如此。 - StingyJack
4个回答

8
您可以使用以下JavaScript来完成此操作:
    <script type="text/javascript">

    function stopReloadKey(evt) {
      var evt = (evt) ? evt : ((event) ? event : null);
      var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
      if (evt.keyCode == 13)  {
          return false;
      }
    }

    document.onkeypress = stopReloadKey;

    </script> 

或者你可以使用JQuery来实现这个功能,方法如下:

<script type="text/javascript">
        $(document).ready(function() {
           $("form").bind("keypress", function(e) {
              if (e.keyCode == 13) {
                 return false;
              }
           });
        });
</script>

4

我不确定我是否理解正确,但如果您想要防止表单被提交:

请附加一个onsubmit事件并从中返回false。

<form onsubmit="submit_handler();"></form>
[...]

function submit_handler()
{
    //do stuff
    return (false);
}

1
回车键怎么办?他希望只有通过鼠标点击才能提交,而不是回车键。 - Maxim Zaslavsky
是的,我在他的问题下留言了。 - nc3b

2
通常,对于像“如何在......后阻止表单提交”的JavaScript问题,答案是“使您的JavaScript函数返回false”。

2
这个会起作用。尽管我强烈不赞成非标准行为,除非你有一个非常好的、非常具体的用例,在这种情况下,这个功能简单地必须被改变。 - anonymous coward

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接