2

我有select2ComboBox 数据是由 Ajax 加载的。我正在尝试通过从输入值(在服务器端设置)select2读取默认值并将其设置为编程方式。idselect2

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

这是我的代码:

HTML 输入为:

<input type="hidden" class="mySelect2" value="01" name="someName" />
值“01”在服务器上设置  

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()”

4

2 回答 2

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'});
        })

代码

<input type="hidden" class="mySelect2" style="width:100px;" value="[{id:'01',text:'01'}]" name="someName" />
于 2013-12-05T12:12:30.090 回答
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 请求的标准。该方法基本上假设您可以返回单个结果以及列表。

于 2013-12-06T00:06:33.910 回答