Select2 更換預設定 id/text key代號

Select2 內置了接收 ajax json 資料時,預設是id text

常見的情況是 API / Ajax url 是別人提供的所以無法更改輸出

更常見的就是,Json 中預計給你顯示的文字是name 而不是text,那麼只能用下面的方法去取代

return {
    id: item.id,
    text: item.name
}

完整js

$(document).ready(function() {
    $('#mySelect2').select2({
        tags: true,
            multiple:true,      
            ajax: {
                delay: 250,
                url: //ajax url / api url
                dataType : 'json',
                processResults: function (data) {
                        return {
                        results: $.map(data.results, function (item) {
                        return {
                            id: item.id,
                            text: item.name
                        }
                    })
                };
            }
        },
    });
});

這樣設定後你就當你的select html是這樣的

<select>
<option value="{{item.id}}">{{item.name}}</option>
</select>

有時某個情況,你希望submit 的value 是text,你就去這樣修改

return {
    id: item.name,
    text: item.name
}