Select2使用远程数据加载单选元素中的默认值


Select2 load default Value in single select elements using remote data

我使用jquery Select2,Select2运行得非常好。但我想要的是,当页面加载时,应该从控制器加载默认值。

是的,我已经在谷歌上搜索过了,是的,这个问题已经发布了很多次,我无法完全理解……所以这就是为什么我需要帮助的原因。

下面是select2js编码:

/*----------- Select2 DropDown Common Script  -------------------------*/
//For ServerSide Script
function commonSelect2(selector,url,id,text,minInputLength,placeholder){
    selector.select2({
        minimumInputLength:minInputLength,
        placeholder:placeholder,
        ajax: {
            type:"post",
            url: url,
            dataType: 'json',
            quietMillis: 100,
            data: function(term, page) {
                return {
                    term: term, //search term
                    page_limit: 10 // page size
                };
            },
            initSelection : function (element, callback) {
                var data = {id: element.val(), text: element.val()};
                callback(data);
            },
            results: function(data, page) {
                var newData = [];
                $.each(data, function (index,value) {
                    newData.push({
                        id: value[id],  //id part present in data
                        text: value[text]  //string to be displayed
                    });
                });
                return { results: newData };
            }
        }
    });
}

下面是我如何从php文件调用它

{{*The Selector for Selecting the User Group*}}
var selector = $('#selectGroup');
var url = "{{base_url()}}admin/usersManageUsers/loadAllUserGroups/";
var id = "GroupID";
var text = "GroupName";
var minInputLength = 0;
var placeholder = "Select User Group";
commonSelect2(selector,url,id,text,minInputLength,placeholder);
//End of the CommonSelect2 function

我添加了initselection()函数,但我不知道我是否写对了它?

最后,我在htmlselect2隐藏输入标签中添加了这个。

我试着在网上搜索,但看起来我在哪里都找不到。

我的错误。我在ajax中定义了initSelection。应该在ajax之外定义它。

现在在ajax 之后定义了initSelection()

ajax: {
    type:"post",
    url: url,
    dataType: 'json',
    quietMillis: 100,
    data: function(term, page) {
        return {
            term: term, //search term
            page_limit: 10 // page size
        };
    },
    results: function(data, page) {
        var newData = [];
        $.each(data, function (index,value) {
            newData.push({
                id: value[id],  //id part present in data
                text: value[text]  //string to be displayed
            });
        });
        return { results: newData };
    }
},
initSelection : function (element, callback) {
    var data = {id: element.val(), text: element.val()};
    callback(data);
}