我有一个文本框,并包裹在一个UpdatePanel像这样在asp.net按钮:文本框输入导致回发或重定向?
<asp:UpdatePanel ID="UpdatePanel21" runat="server" UpdateMode="Always" >
<ContentTemplate>
<asp:TextBox ID="txtLIDescription" runat="server" Columns="50">
</asp:TextBox>
<asp:Button ID="btnAddLineItem" runat="server" onclick="btnAddLineItem_Click"
Text="Add" ToolTip="Add line item." UseSubmitBehavior="false" />
</ContentTemplate>
</asp:UpdatePanel>
如果我按一下按钮一切正常。但是当我按下回车键(我认为我的用户会这么做)时,系统似乎会回复。我试图避免使用jQuery:
$('#LineItemContent_txtLIDescription')
.livequery('keyup', function (event) {
if (event.keyCode == 13) {
$('#LineItemContent_btnAddLineItem').focus();
$('#LineItemContent_btnAddLineItem').click();
}
$("#LineItemContent_btnAddLineItem").button();
});
如果我把一个alert("hello world");
我看到它已经进入if条件,所以它知道一个进入已被点击。然后,我希望将焦点设置到按钮上,然后让它单击按钮,就像常规最终用户会点击按钮一样。 Nope似乎回来了。
我尝试添加:
event.preventDefault();
return false;
在jQuery的希望,这将避免它,没了同样的事情。我甚至尝试ASP.net标记,并添加
UseSubmitBehavior=false
而该网页还似乎回发。这是由于它在一个更新面板内?有没有其他解决方法?
你有没有试过'keydown'?当你按下输入按钮时会发生什么? – 2012-04-24 22:37:34
特拉维斯 - 你读过我的文章了吗......当我按下回车键时,它会进入if条件并设置焦点并且可能点击,但它做得太快了,因为它最终会回传。 – oJM86o 2012-04-24 22:40:22
如果你的代码工作正常,那么在输入按钮被按下的情况下你不会输入这个条件。 “当用户释放键盘上的键时,键入事件将发送到元素。”你很可能不得不处理多个事件。但是如果你满足于只是解决方案,那就坚持不听。你读过我的评论吗? – 2012-04-24 22:47:12