【问题标题】:How do I disable form submit with enter key?如何使用输入键禁用表单提交?
【发布时间】:2011-02-14 08:50:50
【问题描述】:

我在输入按键上有一个 js 事件,效果很好。但在该事件之后,它还会提交具有提交按钮的表单。如何在上一个按键事件之后阻止该提交按钮获得焦点?

编辑:我不希望提交按钮在 ENTER 上提交,只能在点击时提交。

【问题讨论】:

  • 好的,所以用按钮替换您的提交。所以不是
  • 我觉得这值得重复:我强烈反对这种非标准行为——除非你有一个非常好的、非常具体的用例,而这个功能只是必须 被改变。除此之外,这里的答案是正确的:您的按键事件处理程序应该简单地返回“false”。
  • @anonymouscoward - 许多嵌入式或类似终端的系统没有用于在字段之间移动的制表键。用户已经习惯于在为一个字段输入数据后点击 ENTER 以前进到下一个字段。我同意这不是最优的,但它就是这样。

标签: javascript


【解决方案1】:

不确定我是否理解正确,但如果您试图阻止表单提交:

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

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

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

【讨论】:

  • 回车键的东西呢?他希望它只用鼠标点击提交,而不是输入键
  • 是的,我评论了他的问题。
【解决方案2】:

“如何防止我的表单在我......之后提交”类型的 javascript 问题的答案通常是“让你的 javascript 函数返回 false”。

【讨论】:

  • 这行得通。虽然我强烈反对非标准行为 - 除非您有一个非常好的、非常具体的用例,其中只需简单地必须更改此功能。
【解决方案3】:

任何输入都会触发提交事件 你需要覆盖它 - 这里有一个简短的示例代码(5行)如何做到这一点 http://www.bloggingdeveloper.com/post/Disable-Form-Submit-on-Enter-Key-Press.aspx

【讨论】:

    【解决方案4】:

    你可以用java脚本来做到这一点,如下所示;

        <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>
    

    【讨论】:

      猜你喜欢
      • 2022-01-11
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多