diff --git a/js/jquery.mobile.forms.select.js b/js/jquery.mobile.forms.select.js index 65624884..6ee10c4f 100644 --- a/js/jquery.mobile.forms.select.js +++ b/js/jquery.mobile.forms.select.js @@ -74,7 +74,9 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { .appendTo( $.mobile.pageContainer ) .page(), - menuPageContent = menuPage.find( ".ui-content" ), + menuPageContent = menuPage.find( ".ui-content" ), + + menuPageClose = menuPage.find( ".ui-header a" ), screen = $( "
", {"class": "ui-selectmenu-screen ui-screen-hidden"}) .appendTo( thisPage ), @@ -196,9 +198,15 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { }); //events on "screen" overlay + close button - screen.add( headerClose ).click(function(event){ + screen.add( headerClose ).add( menuPageClose ).click(function(event){ self.close(); event.preventDefault(); + + // if the dialog's close icon was clicked, prevent the dialog's close + // handler from firing. selectmenu's should take precedence + if( $.contains(menuPageClose[0], event.target) ){ + event.stopImmediatePropagation(); + } }); }, @@ -393,6 +401,7 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { function focusButton(){ setTimeout(function(){ self.button.focus(); + //remove active class from button self.button.removeClass( $.mobile.activeBtnClass ); }, 40); @@ -400,12 +409,9 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { self.listbox.removeAttr('style').append( self.list ); } - if(self.menuType == "page"){ + if(self.menuType == "page"){ $.mobile.changePage([self.menuPage,self.thisPage], 'pop', true, false); - self.menuPage.one("pagehide",function(){ - focusButton(); - //return false; - }); + self.menuPage.one("pagehide", focusButton); } else{ self.screen.addClass( "ui-screen-hidden" );