Как получить имя из идентификатора в комбо select2?

Я имею select2 ComboBox данные загружаются Ajax. Я пытаюсь установить значение по умолчанию для select2 читая id от входного значения (которое установлено на стороне сервера) и установите его в select2 программно.

Я думаю, что я должен реализовать 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');

И произошла ошибка: "не могу вызвать val(), если initSelection() не определено "

2 ответа

Попробуй что-нибудь подобное

        $(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-код

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

Общая предпосылка инициализации значения по умолчанию в элементе управления select2 с использованием ajax может быть решена с помощью чего-то вроде:

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. Подход предполагает, что вы можете вернуть как один результат, так и список.

Другие вопросы по тегам