asp.net - ASP .NET - Submit on Enter - Prevent 'defaultbutton' when other button has focus -
i have search form consisting of following...
<asp:panel defaultbutton="btnsearch" ... > [...search criteria fields...] <asp:button id="btnreset" onclick="btnreset_click" ... /> <asp:button id="btnsearch" onclick="btnsearch_click" ... /> </asp:panel> the desired behaviour pressing enter key should invoke btnsearch_click (which working defaultbutton attribute in asp:panel)
the problem when btnreset has focus, pressing enter should invoke btnreset_click instead (which doesn't - it's btnsearch).
is achievable somehow, or going have hack bespoke js intercept .net's defaultbutton event handler?
thanks in advance.
eta: here's reusable solution went based on henrychuang's accepted answer below.
add custom attribute
preventdefaultbuttonpanels.<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>run following jquery on pageload.
$("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); }); });
see panel generate html
<div id="yourpanelclientid" onkeypress="javascript:return webform_firedefaultbutton(event, 'btnsearch')"> so, when btnreset onfocus break onkeypress event of panel, add below btnreset, remember when btnreset onblur, change panel keypress oringinal
onfocus="document.getelementbyid('yourpanelclientid').onkeypress = '';" onblur="funa();" function funa() { document.getelementbyid('yourpanelclientid').onkeypress = function () { return webform_firedefaultbutton(event, "btnsearch") }; } like this
<asp:button id="btnreset" onfocus="document.getelementbyid('yourpanelclientid').onkeypress = '';" onblur="funa();" onclick="btnreset_click" .../>
Comments
Post a Comment