以下で構成される検索フォームがあります...
<asp:Panel DefaultButton="btnSearch" ... >
[...search criteria fields...]
<asp:Button ID="btnReset" OnClick="btnReset_Click" ... />
<asp:Button ID="btnSearch" OnClick="btnSearch_Click" ... />
</asp:Panel>
望ましい動作は、Enterキーを押すと呼び出されることです (これは の属性のbtnSearch_Clickおかげで機能しています) 。DefaultButtonasp:panel
問題は、btnResetフォーカスがある場合、代わりに押すEnterと呼び出す必要があることですbtnReset_Click(そうではありません-常にbtnSearchです)。
defaultButtonこれはどうにかして簡単に実現できますか?それとも、.NET のイベント ハンドラーをインターセプトするために特注の JS をハックする必要がありますか?
前もって感謝します。
ETA: 以下の HenryChuang の受け入れられた回答に基づいて、私が行った再利用可能なソリューションを次に示します。
preventDefaultButtonカスタム属性をパネルに追加します。<asp:Panel DefaultButton="btnSearch" preventDefaultButton="btnReset" > [...search criteria fields...] <asp:Button ID="btnReset" OnClick="btnReset_Click" ... /> <asp:Button ID="btnSearch" OnClick="btnSearch_Click" ... /> </asp:Panel>ページロード時に次の jQuery を実行します。
$("div[preventDefaultButton]").each(function () { var div = $(this); var keypressEvent = div.attr("onkeypress"); var btn = $("input[id$=" + div.attr("preventDefaultButton") + "]"); btn.on("focus", { div: div }, function (event) { event.data.div.attr("onkeypress", ""); }); btn.on("blur", { div: div, keypressEvent: keypressEvent }, function (event) { event.data.div.attr("onkeypress", event.data.keypressEvent); }); });