Skip to content
Permalink
Browse files

Selectmenu: improved events and added test file with callbacks

  • Loading branch information
fnagel committed Sep 27, 2011
1 parent 257067c commit 9c43d64312f47aba82596495796eed25b04c6656
Showing with 91 additions and 15 deletions.
  1. +1 −1 tests/visual/selectmenu/disabled.html
  2. +72 −0 tests/visual/selectmenu/events.html
  3. +18 −14 ui/jquery.ui.selectmenu.js
@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Selectmenu - Default functionality</title>
<title>jQuery UI Selectmenu - Disable functionality</title>
<link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css">
<script src="../../../jquery-1.6.2.js"></script>
<script src="../../../ui/jquery.ui.core.js"></script>
@@ -0,0 +1,72 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Selectmenu - Event functionality</title>
<link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css">
<script src="../../../jquery-1.6.2.js"></script>
<script src="../../../ui/jquery.ui.core.js"></script>
<script src="../../../ui/jquery.ui.widget.js"></script>
<script src="../../../ui/jquery.ui.position.js"></script>
<script src="../../../ui/jquery.ui.button.js"></script>
<script src="../../../ui/jquery.ui.menu.js"></script>
<script src="../../../ui/jquery.ui.selectmenu.js"></script>
<link rel="stylesheet" href="../../../demos/demos.css">
<script>
$(function() {
var log = $("#log");
var index = 0;
$('select').selectmenu({
open: function(event, ui) {
$("<div/>").text( index++ + " Opened").prependTo(log);
},
close: function(event, ui) {
$("<div/>").text( index++ + " Closed").prependTo(log);
},
focus : function(event, ui) {
$("<div/>").text( index++ + " Focused: " + ui.item.label).prependTo(log);
},
select: function(event, ui) {
$("<div/>").text( index++ + " Selected: " + ui.item.label).prependTo(log);
},
change: function(event, ui) {
$("<div/>").text( index++ + " Changed to: " + ui.item.label).prependTo(log);
}
});
});
</script>
<style>
form { margin: 20px 0 0 0 }
fieldset { border: 0; }
select { width: 200px; }
.overflow ul { height: 200px; overflow: auto; }
</style>
</head>
<body>

<div class="demo">


<div class="ui-widget" style="float: left; margin-top:2em; font-family:Arial">
Log:
<div id="log" style="height: 400px; width: 270px; overflow: auto;" class="ui-widget-content"></div>
</div>

<form action="#">
<fieldset>
<label for="speed">Select a speed:</label>
<select name="speed" id="speed">
<option value="Slower">Slower</option>
<option value="Slow">Slow</option>
<option value="Medium" selected="selected">Medium</option>
<option value="Fast">Fast</option>
<option value="Faster">Faster</option>
</select>
</form>

</div><!-- End demo -->



</body>
</html>
@@ -189,9 +189,9 @@ $.widget( "ui.selectmenu", {
item.element = self.items[ item.index ];
self._trigger( "select", event, { item: item } );

self.close( event, true);

if ( flag ) self._trigger( "change", event, { item: item } );

self.close( event, true);
},
focus: function( event, ui ) {
self._trigger( "focus", event, { item: ui.item.data( "item.selectmenu" ) } );
@@ -269,19 +269,21 @@ $.widget( "ui.selectmenu", {
close: function( event, focus ) {
var self = this,
options = this.options;

if ( options.dropdown ) {
self.newelement
.addClass( 'ui-corner-all' )
.removeClass( 'ui-corner-top' );

if ( self.opened ) {
if ( options.dropdown ) {
self.newelement
.addClass( 'ui-corner-all' )
.removeClass( 'ui-corner-top' );
}

self.listWrap.removeClass( self.widgetBaseClass + '-open' );
this.opened = false;

if (focus) self.newelement.focus();

self._trigger( "close", event );
}

self.listWrap.removeClass( self.widgetBaseClass + '-open' );
this.opened = false;

if (focus) self.newelement.focus();

self._trigger( "close", event );
},

_renderMenu: function( ul, items ) {
@@ -314,6 +316,8 @@ $.widget( "ui.selectmenu", {
},

_move: function( key, event ) {
// TODO this focus is needed to make the select below work,
// but should be removed as its fires an unwanted focus event
if ( !this.opened ) {
this.list.menu( "focus", event, this._getSelectedItem() );
}

0 comments on commit 9c43d64

Please sign in to comment.
You can’t perform that action at this time.