2010-02-02 108 views
5

这里有一个真正的头刮:我有一个页面上有几个控件,还有一个ASP:按钮或两个。当我在一个控件中,并按下Enter键时,它就像我点击了提交按钮,在这个时候我实际上并不想这样做。输入按键触发按钮点击 - 但我不想它

该按钮不在ASP中:具有DefaultButton集的面板,它没有OnClientClick属性,我可以看到没有监视Enter键的JavaScript ......为什么它会发射?

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

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

谢谢

迈克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; 
    } 

当我运行该页面,然后输入一些内容文本框中的文本,然后按回车 - 公顷,你会看看:在IE 8中,按钮事件被忽略,例如,页面只是重新加载,但在FF中,它提交表格...

嗯。

回答

8

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

+0

我设置的测试页发出一个,但不会触发按钮提交:-s – 2010-02-02 15:13:51

+0

请在IE8和FF中查看我自己的答案...最奇怪的。 – 2010-02-02 15:35:33

1

其实我已经尝试过,现在在萤火虫玩它,它看来,这是一个标准的浏览器的行为,即它具有无关JavaScript或ASP。如果你有提交按钮和一个文本框,那么它只是提交输入。将输入的类型更改为按钮以避免它。

+0

请在IE8和FF中查看我自己的答案......最奇怪的是。 – 2010-02-02 15:36:48

4

如果你不希望回车键触发,也许你可以添加这个js代码添加到网页:

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

您需要在的<body>标签调用这个函数与onkeydown事件处理程序的页。

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(); 
} 
13

通常

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

作品。但是,您可能需要禁用应用程序中的退格,这会在最近的历史记录中返回1页。

+1

我认为同样重要的是要注意,如果你使用'UseSubmitBehavior =“false”',它不仅会阻止它响应输入按钮,而且它会停止在你后面的代码中引发按钮点击事件点击按钮,这可能不是预期的结果。 – Hawkeye 2017-07-26 16:08:23