输入键触发按钮单击 - 但我不希望它

时间:2010-02-02 15:08:24

标签: asp.net

这里有一个真正令人头疼的问题:我有一个页面上有几个控件,还有一个ASP:按钮或两个。当我在一个控件中,并按下Enter键时,它就像我点击了提交按钮,我此时并不想要这样做。

该按钮不在ASP中:设置了DefaultButton的面板,它没有OnClientClick属性,我看不到任何监视Enter键的JavaScript ...为什么要触发?

如果我创建一个标准的.ASPX页面并在其上放置一个文本框和一个按钮,运行它并点击回车键,该按钮被忽略,例如,点击事件不会触发。这是我期望的行为,但我没有。

简而言之,还有什么可能导致按钮认为它是页面的默认按钮?

谢谢,

Mike K。


好的,这是我的测试页面标记:

<p><asp:Label ID="uxNameL" runat="server" AssociatedControlID="uxName">Name</asp:Label><asp:TextBox ID="uxName" runat="server"></asp:TextBox></p>
<p><asp:Button id="uxSubmit" runat="server" Text="Submit" onclick="uxSubmit_Click" /></p>
<asp:Literal ID="uxOut" runat="server" EnableViewState="false"></asp:Literal>

以下是代码中发生的事情:

    protected void uxSubmit_Click(object sender, EventArgs e)
    {
        uxOut.Text = uxName.Text;
    }

当我运行页面,并在文本框中输入一些文本并按Enter键 - ha时,你会看到它:在IE 8中,按钮事件被忽略,例如页面只是重新加载,但在FF中,它提交表单...

Hmmmmm。

6 个答案:

答案 0 :(得分:15)

通常

<asp:Button ID="button" UseSubmitBehavior="false"/> 

的工作原理。但您可能必须在应用程序中禁用退格键,这会在最近的历史记录中将您带回1页。

答案 1 :(得分:8)

我相信(并且有待纠正),但是如果你有一个表单,输入按钮类型为submit,那么当你按下回车键时,它会触发该按钮点击。

答案 2 :(得分:4)

如果您不想触发回车键,也许您可​​以将此js代码添加到您的页面:

if (window.event.keyCode == 13)
{
    event.returnValue=false;
    event.cancel = true;
}

您需要使用页面<body>标记上的OnKeyDown处理程序调用此函数。

答案 3 :(得分:3)

这是HTML的工作方式,如果<FORM>包含<INPUT TYPE='Submit'>,按Enter键将提交表单。 解决方案:How to prevent ENTER keypress to submit a web form?或此处:http://www.cs.tut.fi/~jkorpela/forms/enter.html

答案 4 :(得分:1)

我实际上现在尝试在Firebug中使用它,似乎这是标准的浏览器行为,即它与javascript或ASP无关。如果您有提交按钮和文本框,则只需在输入时提交。将输入的类型更改为按钮以避免它。

答案 5 :(得分:0)

) HTML代码:

<form method="post" action="add_data.php" id="master_form">
<input type='text' name='user-mail' />
<input type="button" value="Submit"  onclick="submitform();" />
</form>

javascript代码:

function submitform()
{
document.getElementById('master_form').submit();
}