【问题标题】:Prevent Users from submitting form by hitting enter #2 [duplicate]通过按 Enter #2 [重复] 阻止用户提交表单
【发布时间】:2010-10-29 17:59:51
【问题描述】:

好吧,在上一个问题中,我问了同样的问题,但答案是当用户在文本框中时我不会阻止提交。

所以基本上我需要的是能够阻止一个人提交表单,除非明确点击提交按钮。

编辑:

基本上这样做的主要原因是这是一项雇主调查。这方面的人不会是最精通技术的人,而我为之做这个的客户已经提出了这个要求。

【问题讨论】:

  • 你的意思是
  • 不,我的意思是一个文本框。此外,使用上一个问题的代码,当他们选择了单选按钮时,它并没有阻止他们按 Enter。

标签: javascript jquery html


【解决方案1】:
$('input').keydown(function(e){
    return e.keyCode !== 13;
});

...顺便说一句,我不建议这样做。

【讨论】:

【解决方案2】:

我将表单设置为 onsubmit="return false" 并这样做了

<input type="button" value="Submit" onClick="document.Survey.submit()" style="font-size: 1.25em;">

【讨论】:

    【解决方案3】:

    我建议使用 onsubmit 处理程序来阻止提交表单(返回 false),然后在单击按钮时使用 javascript 提交表单。

    <form action="accion.htm" onsubmit="return false;">
        <input type="text" name="pepe" />
        <a onclick="this.parentNode.submit();" href="javascript:;">submit</a>
    </form>
    

    请注意,这只是一个示例,不应内联添加事件处理程序,并且 this.parentNode.Submit() 仅在 &lt;a&gt; 是表单的直接子级时才有效。

    【讨论】:

      【解决方案4】:

      如果一个表单有一个文本类型的输入,并且用户在该输入中点击输入,则该表单将被提交,根据 HTML 4 规范。防止这种情况发生的最简单方法是添加另一个隐藏文本输入

      【讨论】:

      • 有大量的文本框,还有单选按钮和一些复选框
      【解决方案5】:

      我在哲学上同意那些说“你为什么要这样做?”的海报。但是我也有人问我这种行为,所以我和你在同一条船上。

      我以前使用过 Thirster42 的解决方案,但这只适用于 GET,而不是 POST。它似乎也是特定于浏览器的——当用户在文本框中输入时,Firefox 不会提交表单,但 Safari 会。 (Firefox 3.5.3、Safari 4.0.3、MacOSX)

      我在网上看到的大部分内容都类似于this:“问:我该怎么做?答:基本上,你不需要。”我相信这是因为跨平台和网络浏览器的行为不一致,适用于 Firefox 的可能不适用于 IE 或 Opera。此外,如果用户在浏览器中禁用了 javascript,您将无法依赖它。

      话虽如此,这就是我所做的似乎有效的方法,借鉴了here 和其他各种地方。在 Firefox、Safari 和 IE 8 中测试。标头的 JavaScript:

      function disableEnterKey(e)
      {
         var key;
         if(window.event)
            key = window.event.keyCode;     // IE 
         else
            key = e.which;     // Firefox
         if(key == 13)
            return false;
         else
            return true;
       }
      

      然后在每个输入字段上:

      :onKeyDown "return disableEnterKey(event);"
      

      我不太喜欢它,但如果它能让人们开心的话......

      【讨论】:

      • 我之前尝试过类似的方法,但它似乎不想为我工作(我无法让代码工作,或者它是错误的代码。我不知道JavaScript 的来龙去脉)。此外,通过您的实施,我必须将其放在每个输入字段中。我的调查可能有大约 300 个,我必须把它放在上面。它还依赖于 javascript,因此这方面并没有真正改变。
      • 我同意,我对 Javascript 的依赖不满意。据我所知,没有可靠的方法可以跨浏览器进行操作。至于“把它放在每个输入字段上”......您是手动编码这些字段,还是以编程方式进行?即使您手动为输入字段编写文本,这也不是一个糟糕的负担。只需一点 javascript,然后使用字符串替换在每个输入字段的末尾添加 43 个字符...
      【解决方案6】:

      为什么需要这样做?

      点击 enter 提交表单是 Web 表单的标准预期行为。

      如果您要确保他们在填写或选择所有选项之前不会意外提交表单,请使用验证 javascript 函数来检查所有字段中的条目表格。如果缺少什么,弹出一个警告框告诉他们缺少什么并返回false。 (将 onsubmit='myValidateForm();' 选项添加到表单标签)

      如果所有需要的数据都填写好了,那么允许enter提交表单以及点击按钮应该没有问题。

      【讨论】:

      • 如果您在一个
        中有两个逻辑表单怎么办。用户甚至不会知道他们是分开的。当您需要页面禁用 javascript 时,这通常是必要的
      猜你喜欢
      • 2010-10-28
      • 1970-01-01
      • 2018-10-07
      • 2021-07-30
      • 2021-10-20
      • 2022-01-06
      • 2014-12-16
      • 2019-08-15
      • 2016-10-01
      相关资源
      最近更新 更多