2012-08-17 89 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

的问题造成的,因为我试图删除从下拉列表中禁用的属性。如果我在重新填充之间禁用它,它似乎工作。非常愚蠢的错误。