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

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

非常感谢!!!

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

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

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

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

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

    1. 表单必须有 NO action=... 属性(AngularJS 会自动处理)
    2. 表单必须有 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; });
      });
      

      【讨论】:

        猜你喜欢
        • 2011-03-30
        • 2021-03-30
        • 1970-01-01
        • 1970-01-01
        • 2020-07-28
        • 1970-01-01
        • 2020-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多