HTML 表单 - 当我点击 Enter 时,它会刷新页面! [复制]

Posted

技术标签:

【中文标题】HTML 表单 - 当我点击 Enter 时,它会刷新页面! [复制]【英文标题】:HTML form - when I hit enter it refreshes page! [duplicate] 【发布时间】:2011-01-14 00:01:04 【问题描述】:

当您按下键盘上的“Enter”键时,有没有办法让表单不刷新或调用任何内容?

非常感谢!!!

我发现这段代码可以阻止 Enter 工作,但它在 IE 中不起作用:(

  $(document).ready(function() 
  $(window).keydown(function(event)
    if(event.keyCode == 13) 
      event.preventDefault();
      return false;
    
  );

【问题讨论】:

【参考方案1】:

如果您使用的是 AngularJS,您可以原生地通过“输入”键阻止表单提交

根据 html 规范和 AngularJS,你需要检查这个列表:

    表单必须有 NO action=... 属性(AngularJS 会自动处理) 表单必须有 NO buttontype="submit" 属性

所以,如果您没有操作属性和提交按钮,那么您的表单不应该通过按回车键来提交。

另外,跨浏览器的keyCode是这样的:

var code = (e.keyCode ? e.keyCode : e.which);

【讨论】:

我知道这不是 AngularJS 的问题,但这对我来说是一种享受(使用 AngularJS)。【参考方案2】:

在表单标签上添加 onSubmit 属性。

<form onSubmit="return false;">

【讨论】:

最简单最好的解决方案,imo【参考方案3】:

禁用submit 事件不是一个好主意。现在您可以从不通过按下相应按钮来提交表单。

相当挂钩keypress 事件:

<form onkeypress="return event.keyCode != 13">

或 jQuery 风格:

$('form').keypress(function(event)  
    return event.keyCode != 13;
); 

13Enter键的keyCode。这适用于从 IE6 到所有当前浏览器的所有浏览器。你只需要考虑 textareas 。然后你可以考虑这个结构:

$(':input:not(textarea)').keypress(function(event)  
    return event.keyCode != 13;
);

【讨论】:

【参考方案4】:

试试这个:

$(function() 
    $("form").submit(function()  return false; );
);

【讨论】:

以上是关于HTML 表单 - 当我点击 Enter 时,它会刷新页面! [复制]的主要内容,如果未能解决你的问题,请参考以下文章

html表单在特定输入上按Enter键时阻止提交[重复]

使用Javascript将文本从表单放入表中,当我单击按钮时它会消失

点击enter回车键实现表单元素切换焦点效果

在 Bootstrap 模式窗口中单击 Enter 并点击提交按钮时提交表单数据

使用 AngularJS 按 Enter 提交表单

如何防止表单提交在字段上点击输入? [复制]