diff --git a/css/jquery.mobile.forms.select.css b/css/jquery.mobile.forms.select.css index ac2ff75f..478b10ed 100644 --- a/css/jquery.mobile.forms.select.css +++ b/css/jquery.mobile.forms.select.css @@ -12,15 +12,10 @@ label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } /*listbox*/ -.ui-listbox { position: relative; margin: 8px; padding: 0; z-index: 100; } -.ui-page-content-hidden, .ui-listbox-hidden { display: none; } -.ui-listbox-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } -.ui-listbox-overlay { position: absolute; z-index: 999; width: 300px; margin-left: -150px; } -.ui-listbox-header { background: none; border: 0; } -.ui-listbox-overlay .ui-listbox-header { display: none; } -.ui-listbox-list { list-style: none; margin: 5px; padding: 0; } -.ui-listbox .ui-listbox-option { margin: 0; text-align: left; } -.ui-li .ui-icon { display: none; } +.ui-listbox { position: absolute; padding: 0; z-index: 100; width: 80%; padding: 10px; } +.ui-listbox-hidden { top: -999999px; left: -99999px; } +.ui-listbox-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 99; } +.ui-screen-hidden, .ui-li .ui-icon { display: none; } .ui-btn-active .ui-icon { display: block; } /*used in listbox - to be removed/replaced with page-style hiding*/ diff --git a/js/jquery.mobile.forms.select.js b/js/jquery.mobile.forms.select.js index f834530c..89b03a85 100644 --- a/js/jquery.mobile.forms.select.js +++ b/js/jquery.mobile.forms.select.js @@ -7,210 +7,205 @@ (function($){ $.fn.customSelect = function(options){ return $(this).each(function(){ + var select = $(this) + .attr( "tabindex", "-1" ) + .wrap( "
" ), + selectID = select.attr( "id" ), + label = $( "label[for="+ selectID +"]" ) + .addClass( "ui-select" ), + //extendable options - var o = $.extend({ - closeText: 'close', - chooseText: 'Choose one:' - }, options); - - var select = $(this), - label = $('label[for='+ select.attr('id') +']').addClass('ui-select'), - buttonId = select.attr('id')+'-button', - menuId = select.attr('id')+'-menu', - thisPage = $(this).closest('.ui-page'), - //create menu button - button = $(''+ $(this.options.item(this.selectedIndex)).text() +'') - .buttonMarkup({ - iconpos: 'right', - icon: 'arrow-d' - }) - .attr({ - 'role': 'button', - 'title': 'select menu', - 'id': buttonId, - 'aria-haspopup': 'true', - 'aria-owns': menuId - }) - // FIXME why mousedown? doesn't seem to work on desktop browsers - .mousedown(function(){ - select.trigger('showmenu'); - return false; - }) - .insertBefore(select), - menuPage = $( "
"+ - "
"+ - ""+ o.closeText +"
" + o.chooseText + "
"+ - "
"+ - "
" ) - .appendTo( "body" ) - .page(), - menuPageContent = menuPage.find('.ui-content'), - listbox = $('
'), - list = $('') - .appendTo(listbox); - + o = $.extend({ + closeText: "close", + chooseText: label.text() + }, options), + buttonId = selectID + "-button", + menuId = selectID + "-menu", + thisPage = select.closest( ".ui-page" ), + menuType, + currScroll, + button = $( "", { + "href": "#", + "role": "button", + "title": "select menu", + "id": buttonId, + "aria-haspopup": "true", + "aria-owns": menuId + }) + .text( $( this.options.item(this.selectedIndex) ).text() ) + .insertBefore( select ) + .buttonMarkup({ + iconpos: 'right', + icon: 'arrow-d' + }), + menuPage = $( "
" + + "
" + + ""+ o.closeText +""+ + "
" + o.chooseText + "
"+ + "
"+ + "
"+ + "
" ) + .appendTo( "body" ) + .page(), + menuPageContent = menuPage.find( ".ui-content" ), + screen = $( "
", { + "class": "ui-listbox-screen ui-overlay ui-screen-hidden fade" + }) + .appendTo( thisPage ), + listbox = $( "
", { "class": "ui-listbox ui-listbox-hidden ui-body-a ui-overlay-shadow ui-corner-all pop"} ) + .insertAfter(screen), + list = $( "