Чтобы обработчик событий `change` срабатывал для элемента Select2, нужно учитывать, что Select2 использует обертку над стандартным элементом `<select>`, и событие `change` может не срабатывать так, как ожидается. Вместо этого, Select2 генерирует свои собственные события, которые нужно обрабатывать.
Для успешного вызова обработчика изменения можно использовать событие `select2:select` и `select2:unselect`, которые срабатывают при выборе или снятии выбора. Вот как можно изменить ваш код, чтобы добавить обработчики для этих событий:
```javascript
let apply_reload_qr_code_event_listeners = () => {
document.querySelectorAll('[data-reload-qr-code]').forEach(element => {
let events = ['paste', 'keyup'];
// Добавляем обработчики для стандартных событий
events.forEach(event_type => {
element.removeEventListener(event_type, reload_qr_code_event_listener);
element.addEventListener(event_type, reload_qr_code_event_listener);
});
// Добавляем обработчики для событий Select2
$(element).on('select2:select select2:unselect', reload_qr_code_event_listener);
});
};
```
В этом примере я использовал jQuery и метод `on` для привязки обработчика событий `select2:select` и `select2:unselect`. Не забудьте, чтобы код работал, подключить jQuery и библиотеку Select2, а также убедитесь, что ваш `reload_qr_code_event_listener` корректно обрабатывает данные выбранные в Select2, если это необходимо.
Если вы хотите использовать чистый JavaScript без jQuery, вы можете использовать `dispatchEvent` для триггера изменения:
```javascript
let apply_reload_qr_code_event_listeners = () => {
document.querySelectorAll('[data-reload-qr-code]').forEach(element => {
let events = ['paste', 'keyup'];
// Добавляем обработчики для стандартных событий
events.forEach(event_type => {
element.removeEventListener(event_type, reload_qr_code_event_listener);
element.addEventListener(event_type, reload_qr_code_event_listener);
});
// Добавляем обработчик для события изменения Select2
$(element).on('select2:select select2:unselect', function () {
let event = new Event('change', { bubbles: true });
element.dispatchEvent(event);
reload_qr_code_event_listener.call(this, event);
});
});
};
```
В этом коде мы программно создаем и вызываем событие изменения, когда происходит выбор объекта в Select2.