2010-01-21 42 views
0

我希望有人能幫忙。我的asp.net應用程序表現出奇怪的行爲。每當我按下Return/Enter鍵時,我都會聽到一系列的嗶嗶聲/響聲。它有點去dindindidindindinggggg!IE輸入嗶嗶聲

我已複製了問題,用小示例應用程序:

<%@ Page Language="Oxygene" AutoEventWireup="true" CodeFile="Default.aspx.pas" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:TextBox ID="TextBox1" runat="server"> 
     </asp:TextBox> 
     <asp:TextBox ID="TextBox2" runat="server"> 
     </asp:TextBox> 
    </form> 
</body> 
</html> 

這只是發生在IE瀏覽器中,Firefox和Chrome也沒有蜂鳴聲。

另外作爲一個側面的問題,如果我刪除其中一個文本框,那麼沒有興奮,但我得到一個帖子,而不是。

任何人都知道這裏發生了什麼?

感謝,

AJ

回答

0

我找到了答案:

<%@ Page Language="Oxygene" AutoEventWireup="true" CodeFile="Default.aspx.pas" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head runat="server"> 
     <title>Untitled Page</title> 
    </head> 
    <body onkeypress="if(event.keyCode==13)return false;"> 
     <form id="form1" runat="server" onsubmit="return false;"> 
      <asp:TextBox ID="TextBox1" runat="server"> 
      </asp:TextBox> 
      <asp:TextBox ID="TextBox2" runat="server"> 
      </asp:TextBox> 
     </form> 
    </body> 
    </html> 

這將停止響鬧和停止時,一回後僅一個單獨的輸入元素。

3

的回車鍵有提交行爲形式。您聽到的聲音是Internet Explorer的方式,表示無法提交表單,因爲沒有提交按鈕。

這不是.NET特有的,而是IE與用戶進行通信的固有部分。快速測試,藉口馬虎HTML:

沒有一個表單提交按鈕,當用戶嘗試提交它會發出蜂鳴聲:

<form><input /><input /></form> 

添加一個提交按鈕,將讓你的表單的點擊聲提交而不是:

<form><input/><input/><input type="submit" /></form> 

您可以通過阻止提交擺脫聲音:

<form onsubmit="return false;"><input/><input/><input type="submit" /></form> 

然後唯一的問題是,按鈕顯示,我猜,這不是你想要的。事實證明,隱藏它將使第一聲音再次出現,勿庸置疑:

<form onsubmit="return false;"> 
    <input/><input/> 
    <input type="submit" style="display: none;"/> 
</form> 

這裏,按鈕被隱藏,這樣瀏覽器就表現爲在沒有按鍵的第一個場景。但是,如果我們在一個更復雜的方式將其隱藏,從而使瀏覽器無法確保它沒有顯示出來,我們可以圍繞這個問題也得到:

<form onsubmit="return false;"> 
    <input/><input/> 
    <input type="submit" style="background-color: transparent; border: 0;" value="" /> 
</form> 

現在,應該指出的是,在這最後的解決方案,那裏實際上還有一個按鈕,用戶看不到,但仍然可以點擊(它不會提交,tho)。我不主張這一點,但如果你要使用這個解決方案,你可能想將寬度和高度設置爲非常小的東西。我的目標不是想出最好的黑客攻擊,而是創建一系列有啓發性的例子,說明爲什麼瀏覽器在給定特定情況下的行爲方式。

+0

好的,我可以捕捉嗶嗶聲或者添加虛擬提交按鈕嗎? – 2010-01-21 14:23:42

+0

當然,請參閱我的編輯=) – 2010-01-21 15:01:08

+0

+1 - 尼斯,詳細的答案。 – 2010-01-21 16:34:27

0

那麼,你沒有提交按鈕,所以它可能會通知你,沒有自動回發處理。這將是我的第一個猜測。

+0

好吧,是的,我沒有自動回發,但這是因爲我真正的應用程序是所有的AJAX。是否有可能捕捉嗶嗶聲? – 2010-01-21 14:24:54