次のように、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>
ボタンをクリックすると、すべてが期待どおりに機能します。しかし、Enter キーを押すと (私のユーザーはそうすると思います)、システムはポストバックを行うようです。jqueryを使用して回避しようとしました:
$('#LineItemContent_txtLIDescription')
.livequery('keyup', function (event) {
if (event.keyCode == 13) {
$('#LineItemContent_btnAddLineItem').focus();
$('#LineItemContent_btnAddLineItem').click();
}
$("#LineItemContent_btnAddLineItem").button();
});
を配置するalert("hello world");
と、if 条件に入ったので、Enter がクリックされたことがわかります。次に、通常のエンド ユーザーがボタンをクリックするのと同じように、ボタンにフォーカスを設定してボタンをクリックさせたいと考えていました。いいえ、ポストバックするようです。
追加してみました:
event.preventDefault();
return false;
それを回避することを望んでいるjqueryでは、同じことはありません。ASP.net マークアップも試して追加しました
UseSubmitBehavior=false
そして、ページはまだ投稿されているようです。これは updatepanel 内にあるためですか? これを回避する他の方法はありますか??