将选项附加到select2

时间:2016-08-06 08:36:23

标签: javascript jquery jquery-select2

我有以下选择:

<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)。

https://jsfiddle.net/8c7ujd4g/

1 个答案:

答案 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
                }
            }
        });