【问题标题】:Clean way to prevent enter button submitting a form防止输入按钮提交表单的干净方法
【发布时间】:2011-04-21 09:52:29
【问题描述】:

我已经看到很多 Javascript 解决方案可以做到这一点,但我确信一定有更简单的方法。

我有一个非常简单的表单——一个多行文本框和一个提交按钮。我希望用户能够提交“格式化”文本(即像电子邮件一样,带有段落、新行等)

但是,当用户按 Enter 输入回车时,它会提交表单。

我在那里必须有一个属性或控制它的东西,因为这一定是一个常见问题。 Javascript 作为解决方案似乎有点过于复杂。

【问题讨论】:

  • 我没有看到任何问题,当我按回车时,它没有提交 from,请输入一些代码 sn-ps 以澄清您的问题

标签: asp.net forms submit


【解决方案1】:

提交按钮上的UseSubmitBehavior属性设置为FALSE。 (找到解决方案here

【讨论】:

  • @Hawkeye,当我点击按钮时会引发点击事件。
  • @TheBerga 好的,我刚刚在纯 asp.net 实现中再次测试了这个,我看到的和你说的一样,事实上,在那种情况下我没有看到 OP 的问题。我个人在混合页面上遇到了这个问题,混合了 Bootstrap 和 asp.net 网络表单,这在针对某种设计美学时提出了一些挑战。在没有详细说明我的情况的情况下,UseSubmitBehavior = False 没有解决我的问题。但现在经过更多测试,我认为我的评论不太准确,或者在这种情况下很有帮助。我会删除它。感谢您促使我重新审视这个!
【解决方案2】:

以下代码解决了我的问题:

http://www.itorian.com/2012/07/stop-from-submission-posting-on-enter.html

<script type="text/javascript">
    //Stop Form Submission of Enter Key Press
    function stopRKey(evt) {
        var evt = (evt) ? evt : ((event) ? event : null);
        var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if ((evt.keyCode == 13) && (node.type == "text")) { return false; }
    }
    document.onkeypress = stopRKey;
</script>

将其放在母版页中或仅放在您想要的页面中。

【讨论】:

    【解决方案3】:

    使用提交行为对我不起作用,但这

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

    为我工作

    【讨论】:

      【解决方案4】:

      您可以将表单或围绕您的文本框的面板上的DefaultButton 设置为不可见(显示:无)按钮。通过这种方式,您可以完全控制当用户在没有(依赖于浏​​览器的)Javascript 的情况下按下回车键时会发生什么。如果你不处理它的 onclick-event,enter-key 将被禁止。

      http://geekswithblogs.net/ranganh/archive/2006/04/12/74951.aspx

      【讨论】:

        【解决方案5】:

        你试过了吗? - Enter key in textarea

        【讨论】:

          【解决方案6】:

          与Max的回答类似,但显示完整代码:

              function EnterKeyFilter() {
                  if (window.event.keyCode == 13) {
                      event.returnValue = false
                      event.cancel = true
                  }
              }
              window.addEventListener('keydown', EnterKeyFilter)
          </script>
          

          当然也类似于其他答案,否则它不会起作用,但可能更简单。

          【讨论】:

            【解决方案7】:

            在 HTML 前端只需将 body 标签替换为 body onkeydown = "return (event.keyCode!=13)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-02-07
              • 2016-02-06
              • 1970-01-01
              • 1970-01-01
              • 2022-01-22
              • 2014-12-13
              相关资源
              最近更新 更多