我希望有人可以提供帮助。我的asp.net应用程序表现出奇怪的行为。每当我按下Return / Enter键时,我都会发出一连串的哔哔/响声。它有点像dindindidindindinggggg!
我用一个小样本应用程序重现了这个问题:
<%@ 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 :(得分: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>
现在,应该注意的是,在最后一个解决方案中,实际上仍然会有一个按钮,用户无法看到,但无论如何都可以点击(它不会提交,因此)。我不提倡这一点,但是如果你正在使用这个解决方案,你可能想要将宽度和高度设置为非常小的东西。我的目标不是提出最好的黑客,而只是创建一系列有用的示例,说明为什么浏览器在特定情况下的行为方式。
答案 1 :(得分:0)
嗯,您没有提交按钮,因此可能会通知您没有自动回复处理。那是我的第一次猜测。
答案 2 :(得分: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>
当只有一个输入元素时,这会停止哔哔声并停止后退。