如何从select2组合中的id获取名称?

时间:2013-12-05 11:42:14

标签: javascript jquery jquery-select2 ui-select2

我有select2 ComboBox数据由Ajax加载。我试图通过从输入值(在服务器端设置)中读取select2并将其设置为id来设置默认值为select2

我认为我应该以解决此问题的方式实现initSelection()功能。

这是我的代码:

HTML输入是:

<input type="hidden" class="mySelect2" value="01" name="someName" />
The value "01" is set at the server  

JavaScript是:

$(".mySelect2").select2({
    ajax: {
        url:"data.php",
        dataType:"json",
        data:function(term, page) {
            return {
                query:term, page: page -1
            } ;
        },
        results:function(data, page) {
            return data  
        }
    }
});

我尝试了这个,但它没有用。

     $(".mySelect2").select2('val', '01');

发生错误:“如果未定义initSelection(),则无法调用val()”

2 个答案:

答案 0 :(得分:0)

尝试这样的事情

        $(function(){
            $(".mySelect2").select2({
                ajax: {
                    url:"data.php",
                    dataType:"json",
                    data:function(term, page) {
                        return {
                            query:term, page: page -1
                        } ;
                    },
                    results:function(data, page) {
                        return data  
                    },

                }
            });
            $(".mySelect2").select2('data', {id:'01',text:'01'});
        })

HTML CODE

<input type="hidden" class="mySelect2" style="width:100px;" value="[{id:'01',text:'01'}]" name="someName" />

答案 1 :(得分:0)

使用ajax初始化select2控件中的默认值的一般前提可以通过以下方式解决:

initSelection: function (element, callback) {
        var id = $(element).val();
        if (id !== "") {
        $.ajax("data.php", {
            data: {
                id: id // return a single item from your service
            },
            dataType: "json"
        }).done(function (data) {
            var results = [];
            $.each(data, function (index, item) {
                results.push({
                    id: item.Id, // whatever your id field is
                    text: item.TextValue // whatever your text field is
                });
            });
            callback(results[0]);
        });
    }
}

我不是PHP人员,但这应该是ajax请求的标准。该方法基本上假设您可以返回单个结果以及列表。