2008-11-06 45 views
10

我有一個帶有文本框和按鈕的窗體。 IE是唯一一個在按下Enter鍵時不會提交表單的瀏覽器(適用於FF,Opera,Safari,Chrome等)。我發現這個javascript函數試圖哄騙IE進入行爲;但無濟於事:輸入按鈕不提交表單(僅限IE)ASP.NET

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

有什麼建議?

編輯:This pageCodeProject概述了Dillie在說,它完美的作品。

+1

那麼,你的表單根本沒有按鈕? – James 2008-11-06 22:23:20

+0

對不起,它也有一個按鈕。感謝您指出了這一點。 – Anders 2008-11-10 13:44:21

回答

13

我過去做過的其他事情是將表單區域封裝在Panel中,並將DefaultButton屬性設置爲您有的提交按鈕。只要在面板區域中有焦點的表單元素,就可以將輸入鍵有效地映射到提交。

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)" 
+0

感謝您的輸入,它會拋出一個可愛的'對象不支持此屬性或方法'錯誤,但:( – Anders 2008-11-06 22:12:04

-1

它使用GET而不是POST嗎? URL是否過長?我已經看到了...

-1

基本上,表單需要按鈕,輸入類型=「提交」或輸入類型=「圖像」,以使內置行爲在輸入時提交表單。你不應該需要一個JavaScript來提交它。

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

當使用display:none,IE不會看到按鈕,並且因此將不能夠使用它來提交表單。相反,您可以使用z-index和絕對定位將其隱藏在其他元素下方,例如與風格:

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

現在,它仍然在那裏,通過IE瀏覽器使用,卻隱藏着另一個元素之下。

0

這是由於對單個文本字段輸入在IE中一個特點。

一個簡單的解決方案是通過添加另一個隱藏的頁面來停止具有單個文本字段的頁面。

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

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

1

隱藏按鈕 - 不使用顯示:無,但有以下樣式:

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

如果你這樣做,你就不會需要添加任何其他元素或隱藏的輸入。