2012-08-17 90 views
0

以下代碼在非IE瀏覽器中完美工作。 請注意這些前三個選項是通過jQuery添加的。jQuery IE9使用ajax重新填充選擇選項

<select id="mySelect" name="mySelect"> 
    <option value="1">MyVal1</option> 
    <option value="2">MyVal2</option> 
    <option value="3">MyVal3</option> 
</select> 

我清除的選項,所以我可以添加新的:

// my new values has the proper values of [{"Id": 4, "Text" : "MyVal4"}, {"Id": 5, "Text": "MyVal5"}] 
$("#mySelect").empty(); 
for (var i = 0; i < myNewVals.length; i++) {    
    $("#mySelect").append('<option value="' + myNewVals[i].Id + '">' + myNewVals[i].Text + '</option'); 
} 

它的工作原理我第一次嘗試填充它,但然後每隨後的時間,它重新填充與下拉相同的值。爲什麼在嘗試重拍選項時會忽略新值?

+1

試試這個: http://stackoverflow.com/questions/170986/what-is-the-best-way-to-add-options-to-a-select-from-an-array- with-jquery – Liam 2012-08-17 12:10:05

+0

你的json數組看起來不正確 – 2012-08-17 12:18:53

+0

由於某種原因,選項列表僅保留在IE中。我無法弄清楚爲什麼! – 2012-08-17 12:27:42

回答

1

最好是使用JSON數組,嘗試這樣的事情:

<script> 
    $(document).ready(function() { 
     var myNewVals = { 4: 'Myval4', 5: 'Myval5' }; 

     $("#popButton").bind('click', function (event) { 

      $("#mySelect").empty(); 
      $.each(myNewVals, function(val, text) { 
       $("#mySelect").append($('<option></option>').val(val).html(text)) 
      }); 
     }); 
    }); 
</script> 

<select id="mySelect" name="mySelect"> 
    <option value="1">MyVal1</option> 
    <option value="2">MyVal2</option> 
    <option value="3">MyVal3</option> 
</select> 
<input type="button" id="popButton" value="Populate!" /> 
0

的問題造成的,因爲我試圖刪除從下拉列表中禁用的屬性。如果我在重新填充之間禁用它,它似乎工作。非常愚蠢的錯誤。