2014-01-15 2 views
0

Я перехожу к значениям компонентов Select2 в формате Json, а затем выбираю одно из выбранных значений.Как установить выделенный элемент по коду с помощью Select2?

Это мой код:

$.getJSON(rootUrl+'getAllValues', { 
     valu : $('#_valu_id').val() 
    }, function(data) { 

     var html = '<option value=""></option>'; 
     var len = data.length; 

     for (var i = 0; i < len; i++) { 
      if(data[i].myfield == $('#myfield').val()){ 
       html += '<option value="' + data[i].id + '" selected>'+ data[i].myfield + '</option>'; 
      }else{ 
       html += '<option value="' + data[i].id + '">'+ data[i].myfield + '</option>'; 
      } 
     } 

     $('#_mySelect_id').html(html); 

    }); 

Но только с атрибутом selected, он не работает.

EDIT: это html переменная:

<option value=""></option> 
<option value="30">U</option> 
<option value="31">G</option> 
<option value="32" selected="selected">A</option> 
<option value="93">H</option> 

Так я могу это сделать ??

Спасибо заранее

+0

Правильный синтаксис должен быть выбран = «выбрано», но я не думаю, проблема там, но с остальной частью вашего кода. Попробуйте добавить предупреждение ('a') в условие if, которое должно добавить «выбранный» к вашему варианту и убедиться, что ваш код туда попал. – user1853181

+0

Я пробовал с выбранным = "selected", но никаких изменений. И да, я пытаюсь добавить предупреждение, и он входит в мое условие if ... – Teo

+0

Можете ли вы проверить полученный HTML-код, который генерирует ваш код, и убедиться, что хотя бы один «выбранный» вариант находится в вашем поле выбора? Кроме того, предупредите свою переменную «html» после того, как она закончит строительство и опубликует ее в вашем вопросе. – user1853181

ответ

2

После изменения HTML содержимого выбор2, вам необходимо обновить выбранное значение:

function(data) { 

     var html = '<option value=""></option>'; 
     var len = data.length; 

     for (var i = 0; i < len; i++) { 
      if(data[i].myfield == $('#myfield').val()){ 
       var selected_value = data[i].id; // Remember selected value 
       html += '<option value="' + data[i].id + '" selected>'+ data[i].myfield + '</option>'; 
      }else{ 
       html += '<option value="' + data[i].id + '">'+ data[i].myfield + '</option>'; 
      } 
     } 

     $('#_mySelect_id').html(html); 

     $('#_mySelect_id').select2().select2('val',selected_value); // Update selected value 
    } 
+0

У меня есть другой вопрос. Могу ли я его обновить, без вызова select2() costructor ?? – Teo

+0

Не стесняйтесь попробовать, так как элемент уже построен, он может также работать. – user1853181

+0

Да, это работает без select2() .. Спасибо – Teo

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