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.

  1. add custom attribute preventdefaultbutton panels.

    <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> 
  2. 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

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -