События
Плагин Select2 поддерживает ряд событий, которые можно как отловить, так и вызвать с помощью кода.
Список событий Select2
Событие | Описание |
change |
Срабатывает всякий раз, когда значение выбрано или удалено. |
change.select2 |
Урезанная версия события change . Срабатывает только для Select2. |
select2:closing |
Срабатывает до закрытия выпадающего списка. Это событие можно предотвратить. |
select2:close |
Срабатывает всякий раз, когда выпадающий список закрывается. Не может быть предотвращено. |
select2:opening |
Срабатывает до открытия выпадающего списка. Это событие можно предотвратить. |
select2:open |
Срабатывает всякий раз, когда выпадающий список открывается. Не может быть предотвращено. |
select2:selecting |
Срабатывает до того, как будет выбрано значение из списка. Это событие можно предотвратить. |
select2:select |
Срабатывает всякий раз, когда выбирается значение из списка. Не может быть предотвращено. |
select2:unselecting |
Срабатывает перед удалением выбранного значения. Это событие можно предотвратить. |
select2:unselect |
Срабатывает всякий раз, когда выбранное значение удаляется. Не может быть предотвращено. |
select2:clearing |
Срабатывает до того, как все выбранные значения будут очищены. Это событие можно предотвратить. |
select2:clear
|
Срабатывает всякий раз, когда все выбранные значения очищаются. Не может быть предотвращено. |
Прослушивание событий
Скопировано
$( 'select' ).on( 'select2:select', function(e) {
// что-то делаем
});
Показать код
Инициация событий
Можно вручную запускать события в элементе управления Select2 с помощью jQuery-метода trigger
:
Скопировано
$( 'select' ).trigger( 'select2:select' );
Показать код
Если же надо передать некие данные в какой-то обработчик события, то надо создать новый объект события jQuery и запустить его:
Скопировано
$( 'select' ).trigger({
type: 'select2:select',
params: {
data: data
}
});
Показать код
Как получить переданные данные в обработчике события смотрим здесь.
Демонстрация возникновения событий в элементе управления Select2
Скопировано
<script src='//code.jquery.com/jquery-3.4.1.min.js'></script>
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/css/select2.min.css'>
<script src='https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/js/select2.min.js'></script>
<style>
#log {
margin: 0 0 10px;
padding: 0 0 0 35px;
height: 150px;
overflow-y: scroll;
border: 1px solid;
}
.select2 {
margin: 0 0 100px;
}
h4 {
margin: 0 0 7px;
}
</style>
<select multiple='multiple'>
<option></option>
<option value='1'>Первое значение</option>
<option value='2'>Второе значение</option>
<option value='3'>Третье значение</option>
</select>
<h4>Лог событий:</h4>
<ol id='log'></ol>
<button>Очистить лог</button>
<script>
jQuery(document).ready(function( $ ) {
$( 'select' ).select2({
placeholder: 'Выберите значение',
allowClear: true,
width: '100%',
minimumResultsForSearch: Infinity
});
$( 'select' ).on( 'change', function() { log( 'change' ); });
$( 'select' ).on( 'change.select2', function() { log( 'change.select2' ); });
$( 'select' ).on( 'select2:closing', function() { log( 'select2:closing' ); });
$( 'select' ).on( 'select2:close', function() { log( 'select2:close' ); });
$( 'select' ).on( 'select2:opening', function() { log( 'select2:opening' ); });
$( 'select' ).on( 'select2:open', function() { log( 'select2:open' ); });
$( 'select' ).on( 'select2:selecting', function() { log( 'select2:selecting' ); });
$( 'select' ).on( 'select2:select', function() { log( 'select2:select' ); });
$( 'select' ).on( 'select2:unselecting', function() { log( 'select2:unselecting' ); });
$( 'select' ).on( 'select2:unselect', function() { log( 'select2:unselect' ); });
$( 'select' ).on( 'select2:clearing', function() { log( 'select2:clearing' ); });
$( 'select' ).on( 'select2:clear', function() { log( 'select2:clear' ); });
$( 'button' ).on( 'click', function() {
$( '#log' ).empty();
});
function log( text ) {
$( '#log' ).append( '<li>' + text + '</li>' ).scrollTop(99999999);
}
});
</script>
Показать код