由于隐藏按钮,Enter 无法在 IE 中提交表单

Posted

技术标签:

【中文标题】由于隐藏按钮,Enter 无法在 IE 中提交表单【英文标题】:Enter does not submit form in IE because of hidden button 【发布时间】:2010-08-23 09:14:36 【问题描述】:

我有一个带有两个按钮的表单。第一个是使用 javascript 隐藏的。

当我在 IE 的文本字段中按 Enter 键时,表单没有提交。我认为这是因为它选择了第一个按钮作为默认提交按钮,但由于该按钮被隐藏它不起作用。

我已通过在 enter keydown Javascript 事件上提交表单来解决此问题。但是,如果用户按下回车键从浏览器的自动完成下拉菜单中选择一个项目,这也会提交表单。

如何在不影响自动完成功能的情况下在 IE 中输入时提交表单?

【问题讨论】:

你为什么有一个隐藏的按钮? 当 Javascript 打开时,当用户从列表框中选择一个值时,表单会自动提交,并且按钮被隐藏。当Javascript关闭时,用户可以在选择一个值后使用按钮提交表单。 我发现这个问题的答案是对实际 Web 开发的绝妙洞察... 【参考方案1】:

尝试使用以下类隐藏按钮:

.hidden-element 
  width: 0px;
  height: 0px;
  position: absolute;
  top: -99999px;
  left: -99999px;

【讨论】:

给一个 1 岁以上的帖子添加答案有点晚了,虽然已经有一个接受的答案.. @Charlie 我不同意。其他人可能会发现此特定评论很有帮助。【参考方案2】:

几年前我们遇到了类似的问题,AFAIR,我们在表单的开头添加了一个附加按钮,当在 IE 中按下 enter 时,它总是执行默认的提交操作。通过给它一个 1x1 透明图像,该按钮可以“几乎隐藏”。

【讨论】:

【参考方案3】:

我通过不透明度 0 修复它,例如:

<input type="submit" style="width: 0px; height: 0px; opacity: 0;" id="submitBtn" name="submitBtn">

【讨论】:

【参考方案4】:

您可以通过以下方式添加其他按钮以保留提交按钮功能:

<![CDATA[<!--[if IE]>]]>
                <input type="text" style="display: none;" disabled="disabled" size="1" />
            <![CDATA[<![endif]-->]]>

【讨论】:

以上是关于由于隐藏按钮,Enter 无法在 IE 中提交表单的主要内容,如果未能解决你的问题,请参考以下文章

阻止用户提交表单

如何禁止按回车键提交表单

如何禁止按回车键提交表单

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

HTML 表单中的多个提交按钮

在 HTML 表单提交上制作 Enter 键而不是激活按钮