Select2 значения по умолчанию для нескольких тегов select и allowed
у меня есть опция select 2 multi-select
<select multiple name="event_type[]" class="form-control" id="selectEvents">
@foreach ($eTypes as $type)
<option>{{$type}}</option>
@endforeach
</select>
Я хочу установить некоторые значения по умолчанию на случай, если пользователь редактирует форму. Я успешно сделал это, сделав это
var s2 = $("#selectEvents").select2({
placeholder: "Choose event type",
tags: true
});
s2.val(["Trade Fair", "CA", "Party"]).trigger("change"); //CA doesn't show as a default
но проблема в том, что я разрешаю пользовательские параметры, используя tags: true
опция для select2.
когда я установить значение по умолчанию, изначально в параметры HTML это работает, но когда я установил по умолчанию, пользовательский не работа.
- Это мой первый раз, используя select2.
как я могу добиться этого?
2 ответов
делая небольшое копание, я вижу, что этот вопрос поднят на GitHub.
один из вариантов-проверить, существует ли значение, и append
, если это не так.
var s2 = $("#selectEvents").select2({
placeholder: "Choose event type",
tags: true
});
var vals = ["Trade Fair", "CA", "Party"];
vals.forEach(function(e){
if(!s2.find('option:contains(' + e + ')').length)
s2.append($('<option>').text(e));
});
s2.val(vals).trigger("change");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.css" rel="stylesheet"/>
<select multiple name="event_type[]" class="form-control" id="selectEvents">
<option>Trade Fair</option>
<option>Party</option>
<option>Foo</option>
<option>Bar</option>
</select>
недавно мне пришлось реализовать select2 с параметрами "несколько" и "теги" в PHP-скрипте и столкнулся с аналогичной проблемой. В документации сказано добавить любые начальные выборки в качестве тегов параметров html, но когда я попытался добавить два, только один появится в моем элементе управления select2.
Я закончил инициализацию элемента управления select2 с параметром config object 'data', который я бы создал динамически.
var initialPropertyOptions = [];
@foreach ($model->properties as $initialProperty`)
var initialPropertyOption = {
id: {{ $initialProperty->id }},
text: '{{ $initialProperty->name }}',
selected: true
}
initialPropertyOptions.push(initialPropertyOption);
@endforeach
$('#properties').select2({
ajax: {
url: route('models.propertySearch'),
dataType: 'json',
delay: 250,
processResults: function(data) {
return {
results: data
}
}
},
placeholder: 'Enter property name',
minimumInputLength: 1,
multiple: true,
tags: true,
data: initialPropertyOptions
});
<div>
<label for="properties">Properties</label>
<select name="properties[]" id="properties">
</select>
</div>