我有以下选择:
<select id="street" name="client[street_id]" class="form-control select2" data-placeholder="Select or Insert The Street" style="width: 100%;">
@foreach($streets as $street)
<option value="{{ $street->id }}">{{ $street->name }}</option>
@endforeach
</select>
初始化:
$(".select2").select2({tags: true});
请注意,多个尚未设置为true。问题是当我输入一个新选项(标签)时,第一次将添加标签,但第二次将替换列表中的第一个。那么如何在选择中添加选项并保留它们呢? (在每次添加时,我都会向服务器请求保存到db)。
答案 0 :(得分:0)
我找到了这个解决方案:
$('.select2').on("select2:select", function(e) {
// what you would like to happen
if(e.params.data.isNew){
$(this).find('[data-select2-tag="true"]').replaceWith($('<option selected>', { value : e.params.data.id })
.text(e.params.data.text));
$.ajax({
// ...
});
}
});
$(".select2").select2({tags: true,
createTag: function (params) {
var term = $.trim(params.term);
if (term === '') {
return null;
}
return {
id: term,
text: term,
isNew: true // add additional parameters
}
}
});