2010-01-21 71 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