Запустить действие после выбора определенной опции из выпадающего списка select2 - PullRequest
1 голос
/ 14 февраля 2020

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

  <div class="col-md-3">
    {!!($errors->has('name')) ? '<div class="form-group has-error">' : '<div class="form-group">'!!} 
    {{Form::label('based on', 'Based on:')}}<br>           
    {!! Form::select('type', ['' => 'Select type'] + ['0' => 'Image', '1' => 'Patient'], null, ['class' => 'form-control select2', 'id' => 'type',  'style' => 'width: 100%;']) !!}
  </div>
</div>  
<div class="col-md-3" id="timeframe-div" style="display: none;">
  {!!($errors->has('name')) ? '<div class="form-group has-error">' : '<div class="form-group">'!!} 
  {{Form::label('based on', 'Timeframe:')}}<br>           
  {!! Form::select('timeframe', ['' => 'Select type'] + ['0' => 'Daily', '1' => 'Weekly', '2' => 'Monthly'], null, ['class' => 'form-control select2', 'id' => 'timeframe',  'style' => 'width: 100%;']) !!}  
</div>
$('#type').on("select2:selecting", function(e) { 
  $("#timeframe-div").css("display", "block");
});

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Попробуйте это:

$('#type').change(function() {
  if($('#type option:selected').text() == 'Patient') {
   $("#timeframe-div").css("display", "block");
  }
});
0 голосов
/ 14 февраля 2020

Из документации Select2 :

Когда инициируется select2:select, к данным из выбора можно получить доступ через свойство params.data:

Таким образом, используйте это:

$('#type').on("select2:select", function(e) { 
  if (e.params.data.text === 'Patient')
    $("#id").css("display", "block");
});

Обратите внимание, что это читает свойство text данных, которые вы предоставляете для Select2. При необходимости вы можете изменить это, чтобы использовать id вместо.

...