2014-01-15 60 views
0

我传递给Json格式的Select2组件值,并且我希望选择一个值作为选定值。如何使用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属性,这是行不通的。

编辑:这是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

会选择正确的语法=“选择”,但我不认为问题在那里,但与您的其他代码。尝试在if条件中添加alert('a')条件,该条件应该将“selected”添加到您的选项,并确保您的代码到达那里。 – user1853181

+0

我试着用selected =“selected”,但没有改变。是的,我尝试添加警报,并在我的if条件中进入... – Teo

+0

您可以检查代码生成的HTML,并确保在您的选择框中至少有一个“选定”选项?另外,请在完成构建之后提醒您的“html”变量并将其发布到您的问题中。 – user1853181

回答

2

在更改选择二的HTML内容,你必须更新所选值:

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

相关问题