mirror of
https://github.com/Hopiu/jquery-mobile.git
synced 2026-03-16 22:10:25 +00:00
94 lines
No EOL
2.1 KiB
JavaScript
94 lines
No EOL
2.1 KiB
JavaScript
/*
|
|
* jQuery Mobile Framework : "button" plugin - links that proxy to native input/buttons
|
|
* Copyright (c) jQuery Project
|
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
|
* http://jquery.org/license
|
|
*/
|
|
|
|
(function( $, undefined ) {
|
|
|
|
//auto self-init widgets
|
|
var initSelector = "button, [type='button'], [type='submit'], [type='reset'], [type='image']";
|
|
|
|
$( document ).bind( "pagecreate create", function( e ){
|
|
$( initSelector, e.target )
|
|
.not( ":jqmData(role='none'), :jqmData(role='nojs')" )
|
|
.button();
|
|
});
|
|
|
|
$.widget( "mobile.button", $.mobile.widget, {
|
|
options: {
|
|
theme: null,
|
|
icon: null,
|
|
iconpos: null,
|
|
inline: null,
|
|
corners: true,
|
|
shadow: true,
|
|
iconshadow: true,
|
|
initSelector: initSelector
|
|
},
|
|
_create: function() {
|
|
var $el = this.element,
|
|
o = this.options,
|
|
type;
|
|
|
|
// Add ARIA role
|
|
this.button = $( "<div></div>" )
|
|
.text( $el.text() || $el.val() )
|
|
.buttonMarkup({
|
|
theme: o.theme,
|
|
icon: o.icon,
|
|
iconpos: o.iconpos,
|
|
inline: o.inline,
|
|
corners: o.corners,
|
|
shadow: o.shadow,
|
|
iconshadow: o.iconshadow
|
|
})
|
|
.insertBefore( $el )
|
|
.append( $el.addClass( "ui-btn-hidden" ) );
|
|
|
|
// Add hidden input during submit
|
|
type = $el.attr( "type" );
|
|
|
|
if ( type !== "button" && type !== "reset" ) {
|
|
|
|
$el.bind( "vclick", function() {
|
|
|
|
var $buttonPlaceholder = $( "<input>", {
|
|
type: "hidden",
|
|
name: $el.attr( "name" ),
|
|
value: $el.attr( "value" )
|
|
})
|
|
.insertBefore( $el );
|
|
|
|
// Bind to doc to remove after submit handling
|
|
$( document ).submit(function(){
|
|
$buttonPlaceholder.remove();
|
|
});
|
|
});
|
|
}
|
|
|
|
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() {
|
|
if ( this.element.attr( "disabled" ) ) {
|
|
this.disable();
|
|
} else {
|
|
this.enable();
|
|
}
|
|
}
|
|
});
|
|
})( jQuery ); |