From f4b4de295eb1dec31f6bb53c25d1d13e2169987e Mon Sep 17 00:00:00 2001 From: Alex L Date: Wed, 11 Jul 2012 16:37:51 +0300 Subject: [PATCH 1/3] Added few new methods indexByValue(val) disableByValue(val) enableByValue(val) --- demos/selectmenu/methods.html | 39 +++++++++++++++++++++++++ ui/jquery.ui.selectmenu.js | 54 +++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) diff --git a/demos/selectmenu/methods.html b/demos/selectmenu/methods.html index d44581d8047..cf867bfcf9a 100644 --- a/demos/selectmenu/methods.html +++ b/demos/selectmenu/methods.html @@ -25,26 +25,60 @@ 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'); + }); + + + }); @@ -59,6 +93,11 @@ 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" +

"default popup" Style

diff --git a/ui/jquery.ui.selectmenu.js b/ui/jquery.ui.selectmenu.js index d878ec5c2bc..f76698cb201 100644 --- a/ui/jquery.ui.selectmenu.js +++ b/ui/jquery.ui.selectmenu.js @@ -803,6 +803,60 @@ $.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; + }, + + 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; From e2bf388bd42a91549c9f476e3ef9fd51d8992e76 Mon Sep 17 00:00:00 2001 From: Alex L Date: Wed, 11 Jul 2012 16:55:31 +0300 Subject: [PATCH 2/3] Added disableAll() and enableAll() methods --- demos/selectmenu/methods.html | 15 +++++++++++++-- ui/jquery.ui.selectmenu.js | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/demos/selectmenu/methods.html b/demos/selectmenu/methods.html index cf867bfcf9a..85c4dfaa8d4 100644 --- a/demos/selectmenu/methods.html +++ b/demos/selectmenu/methods.html @@ -77,7 +77,15 @@ $('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'); + }); }); @@ -96,7 +104,10 @@
Disable "Slow" option
Disable "Up to eleven" option
- Disable everything but "Slow" + 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 f76698cb201..b15c74108dc 100644 --- a/ui/jquery.ui.selectmenu.js +++ b/ui/jquery.ui.selectmenu.js @@ -827,6 +827,26 @@ $.widget("ui.selectmenu", { 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 ) { From 6b19249cc9a2ef3bf75be4e16dfb4aaf3373fe2e Mon Sep 17 00:00:00 2001 From: Alex L Date: Wed, 11 Jul 2012 17:36:11 +0300 Subject: [PATCH 3/3] added transferClasses option --- ui/jquery.ui.selectmenu.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ui/jquery.ui.selectmenu.js b/ui/jquery.ui.selectmenu.js index b15c74108dc..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 ); 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