/* * "button" plugin - links that proxy to native input/buttons */ (function( $, undefined ) { $.widget( "mobile.button", $.mobile.widget, { options: { theme: null, icon: null, iconpos: null, inline: null, corners: true, shadow: true, iconshadow: true, initSelector: "button, [type='button'], [type='submit'], [type='reset'], [type='image']" }, _create: function() { var $el = this.element, o = this.options, type, name, $buttonPlaceholder; // Add ARIA role this.button = $( "
" ) .text( $el.text() || $el.val() ) .insertBefore( $el ) .buttonMarkup({ theme: o.theme, icon: o.icon, iconpos: o.iconpos, inline: o.inline, corners: o.corners, shadow: o.shadow, iconshadow: o.iconshadow }) .append( $el.addClass( "ui-btn-hidden" ) ); type = $el.attr( "type" ); name = $el.attr( "name" ); // Add hidden input during submit if input type="submit" has a name. if ( type !== "button" && type !== "reset" && name ) { $el.bind( "vclick", function() { // Add hidden input if it doesn’t already exist. if( $buttonPlaceholder === undefined ) { $buttonPlaceholder = $( "", { type: "hidden", name: $el.attr( "name" ), value: $el.attr( "value" ) }).insertBefore( $el ); // Bind to doc to remove after submit handling $( document ).one("submit", function(){ $buttonPlaceholder.remove(); // reset the local var so that the hidden input // will be re-added on subsequent clicks $buttonPlaceholder = undefined; }); } }); } this.refresh(); }, enable: function() { this.element.attr( "disabled", false ); this.button.removeClass( "ui-disabled" ).attr( "aria-disabled", false ); return this._setOption( "disabled", false ); }, disable: function() { this.element.attr( "disabled", true ); this.button.addClass( "ui-disabled" ).attr( "aria-disabled", true ); return this._setOption( "disabled", true ); }, refresh: function() { var $el = this.element; if ( $el.prop("disabled") ) { this.disable(); } else { this.enable(); } // the textWrapper is stored as a data element on the button object // to prevent referencing by it's implementation details (eg 'class') this.button.data( 'textWrapper' ).text( $el.text() || $el.val() ); } }); //auto self-init widgets $( document ).bind( "pagecreate create", function( e ){ $.mobile.button.prototype.enhanceWithin( e.target ); }); })( jQuery );