我有由以下的搜索表單...ASP .NET - 提交關於輸入 - 防止「defaultbutton」當其他按鈕具有焦點
<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
(這正得益於在asp:panel
的DefaultButton
屬性)
的問題是,當btnReset
具有焦點,按Enter
應該調用btnReset_Click
,而不是(這不 - 它總是btnSearch
)。
這是很容易實現的,或者我將不得不破解一些定製的JS來攔截.NET的defaultButton
事件處理程序?
在此先感謝。
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>
在pageload上運行以下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); }); });
謝謝!我已經編輯了上面的答案,以包含基於您的技術的可重用解決方案。 – Bumpy