diff --git a/demos/selectmenu/methods.html b/demos/selectmenu/methods.html index d44581d8047..85c4dfaa8d4 100644 --- a/demos/selectmenu/methods.html +++ b/demos/selectmenu/methods.html @@ -25,26 +25,68 @@ var speedA = $('select#speedA').selectmenu(); $("#index").click(function(event){ + event.preventDefault(); console.log($('select#speedA').selectmenu("index")); }); $("#indexNumber").click(function(event){ + event.preventDefault(); console.log($('select#speedA').selectmenu("index", 4)); }); $("#value").click(function(event){ + event.preventDefault(); console.log($('select#speedA').selectmenu("value")); }); $("#valueString").click(function(event){ + event.preventDefault(); console.log($('select#speedA').selectmenu("value", "Medium")); }); $("#valueNumber").click(function(event){ + event.preventDefault(); console.log($('select#speedA').selectmenu("value", 4)); }); $("#valueNumberAsString").click(function(event){ + event.preventDefault(); console.log($('select#speedA').selectmenu("value", "11")); }); $("#valueNonExisting").click(function(event){ + event.preventDefault(); console.log($('select#speedA').selectmenu("value", "test123")); }); + + // Alex L. + + $('#disableSlow').click(function(e){ + e.preventDefault(); + $('select#speedA').selectmenu('disableByValue', 'Slow'); + }); + + $('#disable11').click(function(e){ + e.preventDefault(); + $('select#speedA').selectmenu('disableByValue', '11'); + }); + + $('#disableEverythingButSlow').click(function(e){ + e.preventDefault(); + + $('select#speedA').selectmenu('enableByValue', 'Slow'); + + $('select#speedA').selectmenu('disableByValue', 'Slower'); + $('select#speedA').selectmenu('disableByValue', 'Medium'); + $('select#speedA').selectmenu('disableByValue', 'Fast'); + $('select#speedA').selectmenu('disableByValue', 'Faster'); + $('select#speedA').selectmenu('disableByValue', '11'); + }); + + $('#disableAll').click(function(e){ + e.preventDefault(); + $('select#speedA').selectmenu('disableAll'); + }); + + $('#enableAll').click(function(e){ + e.preventDefault(); + $('select#speedA').selectmenu('enableAll'); + }); + }); @@ -59,6 +101,14 @@ method value with paramater '4' (passed as number)
method value with paramater '11' (passed as string)
method value with paramater 'test123' (not existing value) +
+ Disable "Slow" option
+ Disable "Up to eleven" option
+ Disable everything but "Slow"
+ Disable All
+ Enable All + +

"default popup" Style

diff --git a/ui/jquery.ui.selectmenu.js b/ui/jquery.ui.selectmenu.js index d878ec5c2bc..acddf1d2cf5 100644 --- a/ui/jquery.ui.selectmenu.js +++ b/ui/jquery.ui.selectmenu.js @@ -29,6 +29,7 @@ $.widget("ui.selectmenu", { icons: null, format: null, escapeHtml: false, + transferClasses: true, bgImage: function() {} }, @@ -405,6 +406,12 @@ $.widget("ui.selectmenu", { .toggleClass( 'ui-icon-triangle-1-s', isDropDown ) .toggleClass( 'ui-icon-triangle-2-n-s', !isDropDown ); + // transfer classes to selectmenu and list + if ( o.transferClasses ) { + var transferClasses = this.element.attr( 'class' ) || ''; + this.newelement.add( this.list ).addClass( transferClasses ); + } + // set menu width to either menuWidth option value, width option value, or select width if ( o.style == 'dropdown' ) { this.list.width( o.menuWidth ? o.menuWidth : o.width ); @@ -803,6 +810,80 @@ $.widget("ui.selectmenu", { } }, + indexByValue: function(val) { + var idx = null; + this.element.find('option').each(function(i, opt){ + if ( opt.value == val ) { + idx = opt.index; + return false; + } + }); + return idx; + }, + + _isEnabled: function(idx) { + var self = this, + found = null; + + this.element.find('option').each(function(i, opt){ + if ( opt.index == idx ) { + found = !opt.disabled; + return false; + } + }); + return found; + }, + + disableAll: function() { + var self = this; + this.element.find('option').each(function(i, opt){ + if ( !opt.disabled ) { + self.disable(opt.index); + } + }); + this.disable(); + }, + + enableAll: function() { + var self = this; + if ( this.options.disabled ) { + this.enable(); + } + this.element.find('option').each(function(i, opt){ + self.enable(opt.index); + }); + }, + + disableByValue: function(val) { + var idx = this.indexByValue(val); + if ( idx !== null ) { + if ( this.index() == idx ) { + + if ( this._isEnabled(idx+1) ) { + this.index(idx+1); + } else if ( this._isEnabled(idx-1) ) { + this.index(idx-1); + } else { + this.disable(); + } + + } + this.disable(idx); + } + }, + + enableByValue: function(val) { + var idx = this.indexByValue(val); + if ( idx ) { + + if ( this.options.disabled ) { + this.enable(); + } + + this.enable(idx); + } + }, + value: function(newValue) { if (arguments.length) { this.element[0].value = newValue; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy