Public jQuery events

What events will Select2 trigger?

Select2 will trigger a few different events when different actions are taken using the component, allowing you to add custom hooks and perform actions.

change
Triggered whenever an option is selected or removed.
select2:close
Triggered whenever the dropdown is closed.
select2:closing
Triggered before the dropdown is closed. This event can be prevented.
select2:open
Triggered whenever the dropdown is opened.
select2:opening
Triggered before the dropdown is opened. This event can be prevented.
select2:select
Triggered whenever a result is selected.
select2:selecting
Triggered before a result is selected. This event can be prevented.
select2:unselect
Triggered whenever a selection is removed.
select2:unselecting
Triggered before a selection is removed. This event can be prevented.

Does Select2 include extra information in these events?

{% include options/not-written.html %}

How can I attach listeners for these events?

{% highlight js linenos %} $('select').on('select2:select', function (evt) { // Do something }); {% endhighlight %} {% include options/not-written.html %}

What events does Select2 listen for?

Select2 will listen for the change event on the <select> that it is attached to. If you make any external changes that need to be reflected in Select2 (such as changing the value), you should trigger this event.

{% highlight js linenos %} $('select').val('US'); // Select the option with a value of 'US' $('select').trigger('change'); // Notify any JS components that the value changed {% endhighlight %}

Can I trigger an event other than change to notify Select2 of changes?

It's common for other components to be listening to the change event, or for custom event handlers to be attached that may have side effects. Select2 does not have a custom event (like select2:update) that can be triggered other than change. You can rely on jQuery's event namespacing to limit the scope to Select2 though by triggering the change.select2 event.

{% highlight js linenos %} $('select').val('US'); // Change the value or make some change to the internal state $('select').trigger('change.select2'); // Notify only Select2 of changes {% endhighlight %}

What events can be prevented? How can I prevent a selection from being made?

{% include options/not-written.html %}