Я пытаюсь привязать onclick для выбора элемента ввода с инициализацией select2.

Я хочу привязать обработчик, когда раскрывающийся список нажат или сфокусирован.

<select class="form-control" id="type" name="type" required="required">
    <option value="breakfast" <?= ($type == 'breakfast')? 'selected' : '';?>>Breakfast</option>
    <option value="snacks" <?= ($type == 'snacks')? 'selected' : '';?>>Snacks</option>
</select>

Вот часть js:

$('#type').select2({}).on("select2-selecting", function(e) {
    console.log('not working');
});

Я также пробовал "select2-open/opening", но безуспешно. Как заставить работать привязку событий?

4
Azima 21 Сен 2018 в 11:59

2 ответа

Лучший ответ

В используемой вами версии 3.5.1 следует использовать select2-selecting вместо select2:selecting, например:

$('#type').select2({}).on("select2-selecting", function(e) {
    console.log('not working');
});
$('#type').select2({});

$('#type').on("select2-opening", function(e) {
  console.log('Opening');
});
$('#type').on("select2-selecting", function(e) {
  console.log('Selecting');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.1/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.1/select2.min.js"></script>
<select style="width:300px" id="type">
  <option value="CA">California</option>
  <option value="NV">Nevada</option>
  <option value="OR">Oregon</option>
  <option value="WA">Washington</option>
</select>
4
Zakaria Acharki 21 Сен 2018 в 09:11

Для версии 4.0 + вы можете использовать ниже.

$('#yourselect').on("select2:select", function(e) { 
   // what you would like to happen
});
1
sneha surve 21 Авг 2019 в 09:07