我有由以下的搜索表单...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