IE输入蜂鸣声

时间:2010-01-21 14:18:23

标签: asp.net

我希望有人可以提供帮助。我的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

3 个答案:

答案 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>

当只有一个输入元素时,这会停止哔哔声并停止后退。