fnagel/jquery-ui — Issue #208: Patch to allow suppressing of open event
Author: michaelcaplan
Created: 2012-01-04 17:24:17+00:00
State: open

Hi there,

I found myself needing a way to suppress the opening selectmenu (do optionally allow the opening of a full screen dialog window with advanced tools for navigating the select options). I did this by adding a beforeOpen event that can be used to cancel the open event.

The patch looks like this:

```javascript
open: function(event) {
var self = this, o = this.options;
if ( self.newelement.attr("aria-disabled") != 'true' ) {
self._closeOthers(event);

if (self._trigger("beforeOpen", event, self._uiHash()) === false) {
return;
}

self.newelement.addClass('ui-state-active');

self.listWrap.appendTo( o.appendTo );
self.list.attr('aria-hidden', false);
self.listWrap.addClass( self.widgetBaseClass + '-open' );

var selected = this._selectedOptionLi();
if ( o.style == "dropdown" ) {
self.newelement.removeClass('ui-corner-all').addClass('ui-corner-top');
} else {
// center overflow and avoid flickering
this.list
.css("left", -5000)
.scrollTop( this.list.scrollTop() + selected.position().top - this.list.outerHeight()/2 + selected.outerHeight()/2 )
.css("left","auto");
}

self._refreshPosition();

var link = selected.find("a");
if (link.length) link[0].focus();

self.isOpen = true;
self._trigger("open", event, self._uiHash());
}
},
```

I'm including it here for consideration.

Thanks,

Mike