2013-12-05 3 views
2

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

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

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

+1

Что такое select2? – Poetro

+0

select2 - это плагин javascript, это документация http://ivaynberg.github.io/select2 – mehsen

+0

Любая помощь Пожалуйста. – mehsen

ответ

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

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

спасибо 4 ответ, но это не то, что я хочу. Мне нужно установить на , если это возможно. Другим словом мне нужно угадать от и выбрать его. – mehsen

+0

какое имя ???? –

+0

Я имею в виду вместо . Я пробовал это: $ (". MySelect2"). Select2 ('val', '01'); но есть ошибка «initSelection не определен» – mehsen

0

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

+0

Означает ли это, что я не могу установить выбранный элемент в элементе управления select2 локально из данных, которые я уже инициализировал 'ajax'? И я обязан отправить запрос ajax в 'initSelection', чтобы получить один элемент, который у меня уже есть в предварительно инициализированных данных? Интересно, могу ли я получить элемент из предварительно инициализированных данных с помощью 'id' в' initSelection' и 'callback'. – mehsen

+0

Глядя на свой код, вы еще не загрузили данные - он будет загружен лениво, когда вы удалите элемент управления select. В целом, лучше спроектировать запрос для одного значения (незначительная полезная нагрузка), и, если потребуется, получить остальную информацию по запросу. Вы также можете использовать поддержку элемента управления select2 для загрузки по требованию. – SteveChapman

Смежные вопросы