这里有一个真正令人头疼的问题:我有一个页面上有几个控件,还有一个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。
答案 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();
}