以下で構成される検索フォームがあります...
<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
おかげで機能しています) 。DefaultButton
asp: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); }); });