10

我有一个带有文本框和按钮的表单。IE 是唯一在按下 Enter 时不会提交表单的浏览器(适用于 FF、Opera、Safari、Chrome 等)。我发现这个 javascript 函数试图哄骗 IE 行为;但无济于事:

function checkEnter(e){
    var characterCode
    if (e && e.which) {
        e = e
        characterCode = e.which
    } else {
        e = event
        characterCode = e.keyCode
    }
    if (characterCode == 13) {
        document.forms[0].submit()
        return false
    } else {
        return true
    }
}

执行:

searchbox.Attributes("OnKeyUp") = "checkEnter(event)"

有什么建议吗?

编辑: CodeProject上的此页面概述了 Dillie 所说的内容,并且效果很好。

4

9 回答 9

25

只需在页面上的隐藏 div 中创建文本输入。这将绕过 IE 错误。

示例 div:

    <!-- Fix for IE bug (One text input and submit, disables submit on pressing "Enter") -->
    <div style="display:none">
            <input type="text" name="hiddenText"/>
    </div>
于 2009-01-28T15:10:43.807 回答
13

我过去做过的另一件事是将表单区域包装在 Panel 中,并将 DefaultButton 属性设置为您拥有的提交按钮。只要您在面板区域中有一个表单元素处于焦点位置,这就会有效地将 enter 键映射到提交。

于 2008-11-06T22:14:51.150 回答
3

这里有一个很好的关于这个问题的文章,以及一个很好的基于 jquery 的解决方案:

http://www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enter

于 2011-02-10T05:41:48.950 回答
2
// Use the following Javascript in your HTML view
// put it somewhere between <head> and </head>

    <script language="JavaScript" type="text/javascript"><!--
    function KeyDownHandler(btn)
    {
      if (event.keyCode == 13)
      {
        event.returnValue=false;
        event.cancel = true;
        btn.click();
      }
    }
    // -->
    </script>

    // Put this in your TextBox(es) aka inside <asp:textbox ... >
    onkeydown="KeyDownHandler(ButtonID)"
于 2008-11-06T22:05:01.670 回答
1

使用 时display:none,IE 将看不到按钮,因此无法使用它来提交表单。相反,您可以使用z-index和绝对定位将其隐藏在另一个元素下,例如使用样式:

position:absolute; bottom: -20px; left: -20px; z-index: -1;

现在它仍然存在,可供 IE 使用,但隐藏在另一个元素之下。

于 2009-06-01T23:04:22.863 回答
1

隐藏按钮 - 不使用 display:none,但使用以下样式:

position: absolute; /* no longer takes up layout space */
visibility: hidden; /* no longer clickable / visible */

如果您这样做,您将不需要添加任何其他元素或隐藏输入。

于 2012-06-14T15:36:26.887 回答
0

这是由于 IE 对单个文本字段输入的特殊性。

一个简单的解决方案是通过添加另一个隐藏的文本字段来停止具有单个文本字段的页面。

<input type="text" name="hidden" style="visibility:hidden;display:none;" />

见.. http://www.4guysfromrolla.com/articles/060805-1.aspx

于 2012-03-14T09:45:45.677 回答
-1

它是否使用 GET 而不是 POST?网址是否太长?我见过那个...

于 2008-11-06T22:08:29.353 回答
-1

基本上,表单需要一个按钮、输入类型=“提交”或输入类型=“图像”,以启用内置行为以在输入时提交表单。您不需要 javascript 来提交它。

于 2008-11-06T22:41:27.447 回答